2014-10-19 2 views
0

Я пытаюсь манипулировать отправкой формы с помощью пары кнопок отправки с помощью jQuery. Код выглядит следующим образом:jQuery: Как изменить несколько атрибутов формы перед отправкой

<form id="cf" action="" method="POST" target=""> 
     <button id="preview">Preview</button> 
     <button name="submit" id="submit">Save</button> 
    </form> 
    <script> 
     $("#preview").on("click",function(e) { 
      $(this).attr('name','submit'); 
      e.preventDefault();   
      $("#cf").attr({ 
        'action':'/preview/', 
        'target':'_blank' 
       }).submit(); 
     }); 
    </script> 

Изменение значений атрибутов, казалось, работать при нажатии кнопки «Просмотр» щелкнул, но она не представляет. Что не так с кодом?

+1

Вы форму в 'id' должен быть' «сравни» ',' не «#cf» '. '#' В '$ (" # cf ")' означает 'select по id *, следующему за * # '. –

+0

Ваша кнопка перезаписывает 'form.submit', потому что она называется' submit', меняет название кнопки, и она будет работать. – adeneo

+0

@Paul Roub Извините за опечатку. – netizen0911

ответ

3

Каждая форма имеет прикрепленную к ней функцию отправки, она называется form.submit.

Когда вы назовете что-то внутри формы submit, оно также прикрепляется к форме, и оно перезаписывает родной form.submit, поэтому форма больше не может быть отправлена ​​с помощью функции отправки.

Переименование кнопки ни к чему, кроме submit, и удалите строку, которая устанавливает имя submit

<form id="cf" action="" method="POST" target=""> 
    <button id="preview">Preview</button> 
    <button name="my_submit" id="my_submit">Save</button> 
</form> 
<script> 
    $("#preview").on("click",function(e) { 
     e.preventDefault();   

     $("#cf").attr({ 
       'action':'/preview/', 
       'target':'_blank' 
     }).submit(); 
    }); 
</script> 
Смежные вопросы