当输入电子邮件和MessageText时,我有发送信息的表单。我想使用jQuery验证引擎插件和ajax响应来返回结果。为此,我在每一种情况下都使用相同的jQuery('#messageSendButton').click()函数。
若要从控制器返回响应:
<script type="text/javascript">
jQuery('#messageSendButton').click(function () {
var url = '@Url.Action("SendQuickMessage", "Home")';
var email = $('#email').val();
var messageText = $('#messageText').val();
$.ajax({
url: url,
type: 'GET',
contentType: 'application/json',
data: { Email: email, Message: messageText },
success: function (result) {
if (result.success) {
alert("Message sent! Thanks!");
}
else {
alert("Error occured!");
}
},
complete: function () {
$(".loading").hide();
}
});
});
</script>并且,为了验证表单:
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('#quickMessageForm').validationEngine('init');
jQuery('#messageSendButton').click(function () {
jQuery('#quickMessageForm .loading').animate({ opacity: 1 }, 250);
if (jQuery('#quickMessageForm').validationEngine('validate')) {
jQuery.post('/Home/SendQuickMessage', {
Email: jQuery('#email').val(),
Message: jQuery('#message').val(),
formname: 'messageForm',
formtype: 'messageF'
}, function () {
jQuery('#quickMessageForm .loading').hide();
});
return false;
} else {
jQuery('#quickMessageForm .loading').animate({ opacity: 0 }, 250);
return false;
}
});
});
</script>另外,它们都是单独工作的,但同时,函数首先工作,第二个验证工作。这不对,。我怎么才能把它们结合在一起呢?首先对表单进行验证,然后得到ajax响应。
编辑:
以下是表格:
<form action="#" method="post" id="quickMessageForm">
<div class="form_info cmsms_input">
<label>Email<span class="color_3"> *</span></label>
@Html.TextBoxFor(model => model.Email, new { name = "email", id = "email", tabidex = 1, @class = "validate[required,custom[email]]" })
</div>
<div class="form_info cmsms_textarea">
<label>Message<span class="color_3"> *</span></label>
@Html.TextAreaFor(model => model.Message, new { id = "messageText", name = "messageText", tabindex = 2, @class = "validate[required,minSize[10]]" })
</div>
<div class="loading"></div>
<div>
<input type="submit" name="messageSendButton" id="messageSendButton" value="Send" class="button_small" tabindex="3" />
</div>
</form>发布于 2013-01-12 09:52:43
你可以试试下面的样子。
也就是说,让ajax调用async:false
$.ajax({
url: restmethod,
type: "POST",
contentType: "application/json",
async:false
success: function(data) {
return data.d;
}
});我希望这会对你有所帮助。
https://stackoverflow.com/questions/14291587
复制相似问题