嗯...这是其他答案的问题在这里:他们不对你的HTML。
有jQuery中的错误(我认为这是一个错误),如果你的表格上一个元素的submit
一个name
哪里,然后触发形式的submit
事件将无法正常工作。
您需要从您的input type="submit"
按钮中删除name
属性,或者直接给它一个“submit”以外的名称。
HTML
<form action ="/submit-page/" method='post' class="editable">
<fieldset>
<select name="status" id='status'>
<option value="Submitted">Submitted</option>
<option value="Canceled">Canceled</option>
<option value="Application">Application</option>
</select>
<input type="submit" value="SAVE" name="submit-button"/>
</fieldset>
</form>
jQuery的
$('#status').on('change', function() {
var $this = $(this),
val = $this.val();
if (val === 'Canceled' && confirm("are you sure?")) {
$this.closest('form').submit();
}
});
PHP
$submitted = !empty($_POST['submit-button']);
if($submitted)
{
// Submit button was pressed.
}
else
{
// Form was submitted via alternate trigger.
}
考试PLE
工作:http://jsfiddle.net/xixonia/KW5jp/
不工作:http://jsfiddle.net/xixonia/KW5jp/1/
编辑
你,因为更新你的问题,而这个答案不再是你是什么样一个有效的解决方案寻找。相反,看看Chris Platt's answer。
编辑再次
这是Chris Platt's answer的修改版本。它只是等待DOM准备就绪(元素被加载),然后执行第一个$(...)
中包含的逻辑。
$(function() { // this first jQuery object ensures that...
/// ... the code inside executes *after* the DOM is ready.
$('form.editable').submit(function(){
if ($('#status').val()=='Canceled') {
if (!confirm('Warning message here. Continue?')) {
return false;
}
}
});
});
你应该已经张贴此作为答案:)我是很想... – mindandmedia 2012-02-24 18:45:49
教程这里:模态确认对话框上的表单提交(http://www.jensbits.com/2009/08/10 /莫代尔 - 认可 - 对话框上形式提交,JavaScript的jQuery的UI和-ThickBox的品种/)。它包含一个普通的js例子。 – 2012-02-24 18:46:15
你的意思是一个确认框喜欢这里提到的:http://www.w3schools.com/js/js_popup.asp 或者类似的东西:http://forum.jquery.com/topic/jquery-confirm-box – 2012-02-24 18:40:39