停止对表格所需提交
问题描述:
我有一个形式,在提交应该看到,如果文本区域没有文字或占位符文本。停止对表格所需提交
IIF它它不应该提交。像验证一样。我无法停止表单提交。
$(document).ready(function() {
var options = {
target: '.user-status',
// target element(s) to be updated with server response
beforeSubmit: showRequest,
// pre-submit callback
success: showResponse,
// post-submit callback
// other available options:
//url: url // override for form's 'action' attribute
//type: type // 'get' or 'post', override for form's 'method' attribute
//dataType: null // 'xml', 'script', or 'json' (expected server response type)
//clearForm: true // clear all form fields after successful submit
resetForm: true // reset the form after successful submit
// $.ajax options can be used here too, for example:
//timeout: 3000
};
$('#updateStatus').submit(function() {
$(this).ajaxSubmit(options);
return false; // prevent a new request
});
function showRequest(formData, jqForm, options) {
var textbox = $('#StatusMessageMessage').val();
if ((textbox == '') || (textbox == "What have you been eating ?")) {
alert(text);
return false;
} else {
$('#StatusMessageMessage').attr('disabled', true);
}
}
function showResponse(responseText, statusText, xhr, $form) {
$('#StatusMessageMessage').attr('disabled', false);
}
statusMEssagebox();
});
function statusMEssagebox() {
var textholder = $('#StatusMessageMessage').val();
$('#StatusMessageMessage').focus(function() {
if ($(this).val() == textholder) $(this).val("");
$(this).animate({
"height": "48px",
}, "fast");
$('.share').slideDown("fast");
$(this).TextAreaExpander(48, 75);
});
$('#StatusMessageMessage').blur(function() {
if ($(this).val() == "") {
$(this).val(textholder);
$('.share').slideUp("fast");
$(this).animate({
"height": "18px",
}, "fast");
}
});
}
答
我看到你使用jQuery形式插件ajaxify表单。文档中有一个example,说明如何以优雅的方式实现这一点。您无需订阅表格的.submit
事件,并使用.ajaxSubmmit
手动提交。你可以简单地尝试这个办法:
$(function() {
$('#updateStatus').ajaxForm({
beforeSubmit: function(formData, jqForm, options) {
var value = $('#StatusMessageMessage').val();
if (value == '' || value == 'What have you been eating ?') {
return false;
}
}
});
});
答
您正在使用等号运算符而不是比较。
此:
if ((textbox = '') || (textbox = "What have you been eating ?")) {
Problem -----^
应该是:
if (textbox == '' || textbox == "What have you been eating ?") {
你也可以看到如何使用通过Ajax提交表单的jQuery:
+0
我改变了这一切。仍然不会停止通过正常提交提交表单(尝试在这里的AJAX) – 2010-11-14 09:56:37
谢谢。所以我应该把它放在提交不点击?将尝试 – 2010-11-14 09:45:18
不,不在提交,也不在点击。在我的例子中应该在$(document).ready'中。你只是声明'updateStatus'将是一个ajax表单,这意味着当表单被提交时它将发送一个ajax请求,而不是一个普通的请求。我们还订阅了'beforeSubmit'事件,它允许我们在发生验证错误时取消提交。 – 2010-11-14 09:46:23
它在里面准备好文档。我编辑了代码。现在当验证失败时,它发送一个正常的请求,而不是ajax。 :( – 2010-11-14 09:50:41