2012-06-20 2 views
1

У меня есть две простые кнопки Подайте на моей форме, которые работают просто отлично:JQuery .click() на представить - не посылать значение

<button id="accept" type="submit" name="accept" value="accept">Accept</button> 
<button id="decline" type="submit" name="decline" value="decline">Decline</button> 

Однако страница в вопросе вы можете либо мнение, перейдя непосредственно к URL-адресу, или он иногда отображается в диалоговом окне модальный, который у меня есть настройка с помощью следующей JQuery:

dialog.dialog({ 
    buttons: [ 
     { 
      text: "Decline", click: function() { 
       $('#decline').click(); 
       dialog.dialog('close'); 
      } 
     }, 
     { 
      text: "Accept", click: function() { 
       $('#accept').click(); 
       dialog.dialog('close'); 
      } 
     } 
    ] 
}); 

dialog.load(url + '&ajax=1'); 

Это отправляет форму очень хорошо, и он обнаруживает все после информации, кроме того элемента, который был на самом деле щелкнул. Например, если вы загружаете форму и нажмите кнопку #decline, эта информация будет опубликована, это не относится к jQuery.

Благодаря

ответ

3

Тщательные с диалогами, поскольку они не делают ваше представить действие из ваших входов ждать. Как только вы нажмете кнопку, будет отправлено сообщение. Вы должны использовать ввод кнопки типа вместо отправки и управлять представлением с помощью метода $ (form) .submit(). Это может решить ваши проблемы

EDIT: ответить на Ваш комментарий:

<style> 
.submitbutton{ 
    text-align:center; 
    font-weight:bold; 
    /* you can do whatever you like here */ 
}​ 
</style> 
<div id="dialog"></div> 
<form id="myform"> 
<input id="accept" class="submitbutton" type="text" value="Accept button" name="accept" value="accept"/> 
<input id="decline" class="submitbutton" type="text" value="Decline button" name="decline" value="decline"/> 

</form>​ 
<script> 
$('#accept,#decline').click(function(e){ 
    alert('you clicked #'+$(this).attr('id')); 
    //you can do whatever you want here as you know which button was pressed. 
    // to add more information in your form : 
    $('#myform').append($("<input>").attr("type", "hidden").attr("name", "newhiddendata").val("something")); 
    $('#myform').submit(); 
}); 

var dialog= $('#dialog'); 
dialog.dialog({ 
    modal:true, 
    buttons: [ 
     { 
      text: "Decline", click: function() { 
       dialog.dialog('close'); 
       $('#decline').click(); 

      } 
     }, 
     { 
      text: "Accept", click: function() { 
       dialog.dialog('close'); 
       $('#accept').click(); 
      } 
     } 
    ] 
}); 
​ 
</script> 

http://jsfiddle.net/techunter/KPu7G/

это действительно сырые, не CSS на всех, но вы видите точку.

+0

Спасибо, у меня вначале были кнопки в качестве входных данных, но у меня были серьезные проблемы в IE8, также это означало, что у меня не было значков/изображений рядом с каждой кнопкой! :-) Если я управляю представлениями с помощью $ (form) .submit(), как он узнает, какую кнопку я нажал? Еще раз спасибо – Nick

+1

обновил мой jsfiddle, проверьте его – TecHunter

+0

Ах, сказочный, спасибо :) – Nick

0

попробовать:

dialog.dialog({ 
    buttons: { 
      "Decline": function() { 
       $(this).dialog("close"); 
      }, 
      "Accept": function() { 
       $(this).dialog("close"); 
      }   
     } 
}); 
+0

Спасибо, но, гм, как кнопки будут отправлять форму? :) – Nick

+0

$ (your_form) .submit(); – chrisvillanueva

+1

Спасибо, но тогда как форма могла узнать, какая кнопка была нажата? – Nick

1

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

+0

Спасибо, я думаю, что это лучший вариант! – Nick

Смежные вопросы