Подтвердить что ты не робот

Как использовать JavaScript для изменения действия формы

Мой текущий код выглядит следующим образом:

<div class="fr_search">   
  <form action="/"  accept-charset="UTF-8" method="post" id="search-theme-form">
  .......
  </form>
</div>

Теперь я хочу написать функцию для изменения действия и метода формы, когда выполняется условие. Как написать этот код?

Например,

function test() {
   if (selectedIndex === 1)....
} // How do I write this code?
4b9b3361

Ответ 1

function chgAction( action_name )
{
    if( action_name=="aaa" ) {
        document.search-theme-form.action = "/AAA";
    }
    else if( action_name=="bbb" ) {
        document.search-theme-form.action = "/BBB";
    }
    else if( action_name=="ccc" ) {
        document.search-theme-form.action = "/CCC";
    }
}

и ваша форма должна иметь name в этом случае

<form action="/"  accept-charset="UTF-8" method="post" name="search-theme-form" id="search-theme-form">

Ответ 2

Попробуйте следующее:

var frm = document.getElementById('search-theme-form') || null;
if(frm) {
   frm.action = 'whatever_you_need.ext' 
}

Ответ 3

Я хотел использовать Javascript для изменения действия формы, поэтому у меня могут быть разные входы ввода в одной и той же форме, связанные с разными страницами. У меня также было дополнительное усложнение использования Apache rewrite для изменения example.com/page-name на example.com/index.pl?page=page-name. Я обнаружил, что изменение действия формы вызвало example.com/index.pl (без параметра страницы), даже если ожидаемый URL (example.com/page-name) был отображен в адресной строке. Чтобы обойти это, я использовал Javascript для вставки скрытого поля для установки параметра страницы. Я все еще изменил действие формы, так что адресная строка отображала правильный URL.

function setAction (element, page)   
{ 
  if(checkCondition(page))
  {
    /* Insert a hidden input into the form to set the page as a parameter. 
     */ 
    var input = document.createElement("input"); 
    input.setAttribute("type","hidden"); 
    input.setAttribute("name","page"); 
    input.setAttribute("value",page);   
    element.form.appendChild(input); 

    /* Change the form action. This doesn't chage which page is displayed, 
     * it just make the URL look right. 
     */ 
    element.form.action = '/' + page;   
    element.form.submit(); 
  }
} 

В форме:

<input type="submit" onclick='setAction(this,"my-page")' value="Click Me!" />

Вот мои правила перезаписи Apache:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/index.pl?page=$1&%{QUERY_STRING}

Мне было бы интересно узнать, почему просто настройка действия не сработала.

Ответ 4

Если вы используете jQuery, это так просто:

$('form').attr('action', 'myNewActionTarget.html');

Ответ 5

 // i assume that you want to change form action based on drop-down choice 
 function change_action(form1){
if(form1.mydropdown_name.selectedIndex===1){
    form1.action = "aaaa.php";
}else{
         form1.action = "bbbb.php";
    }
 }

 //how to use
 <select name='mydropdown_name' id='mydropdown_id' onchange="change_action(this.form)"><option value="1">first</option><option value="2">second</option></select>
 //this way you do not have to provide js function with form name.