我创建了一个按钮
<button type="submit" class="btn btn-info" name="enroll" onClick="return clicknow()">
JS中的我写了clicknow
函数如下:
<script>
function clicknow()
{
jQuery('#sheduling_wait').show();
var roll_number = jQuery('#roll_number').val();
var class_n = jQuery('#class_n').val();
//alert(class_n);
var FirstData = "roll_number=" + roll_number+"&class_n="+class_n;
var currenturl = jQuery(location).attr('href');
var url = currenturl;
jQuery.ajax({
dataType : 'html',
type: 'GET',
url : url,
data : FirstData,
complete : function() { },
success: function(data)
{
data1=jQuery(data).find('div#stfflistdiv');
//jQuery('#staff').show();
jQuery('#staff').html(data1);
var data2 = jQuery('#staff #stfflistdiv').html();
console.log(data2);
if(data2 == '2')
{
jQuery('#staff').show();
jQuery('#staff').html("This roll No is already Saved, Please add another roll no");
jQuery('#sheduling_wait').hide();
return false;
}
else
{
jQuery('#sheduling_wait').hide();
return true;
}
}
});
}
</script>
我遇到问题,当data2
的值等于2时,由于return false
,页面会指示而不是停留在同一页面上,
如果data2 == 2
如何保持同一页面,并在data2 == 1
的值
答案 0 :(得分:4)
你必须这样做
<button type="submit" class="btn btn-info" name="enroll"> <!-- remove onclick-->
然后
$(document).ready(function() {
$("#myform").submit(function(event){
if(data ==2)
{
event.preventDefault(); //prevent the default submit action
//...your code
}else{
//other code
}
});
});
答案 1 :(得分:2)
return语句返回succes函数的数据。不适用于clicknow()
选项: 在clicknow中将变量设置为false。 var ret = false; 并设置ajax async:false(不推荐) 成功函数设置你的变量为true或false;
if(data2 ==&#39; 2&#39;){ret = false; } else {ret = true; }
并进入结束功能clicknow return ret;
抱歉,我的英语。问候。
答案 2 :(得分:0)
外部函数不返回从success
回调返回的值。实际上,在ajax调用返回之前不会调用success
回调,这是在外部函数已经返回之后。
您可以在表单上注册提交事件处理程序,而不是在提交按钮中添加onclick
属性。在提交事件处理程序中,您可以调用e.preventDefault()
来停止正常的表单提交。然后,当ajax调用返回并且您希望表单提交时,您可以调用表单元素的submit()
方法。 (不要在表示表单的jQuery对象上调用submit()
,这会导致再次调用submit-event处理程序,这将导致无限循环。在实际表单上调用submit()
元素。)
<script>
jQuery(function($) {
$('#myForm').submit(function(e) { // <-- Use your form's id
e.preventDefault();
var form = this;
$('#sheduling_wait').show();
$.ajax({
type: 'GET',
url: $(location).attr('href'),
data: {
roll_number: $('#roll_number').val(),
class_n: $('#class_n').val()
},
dataType: 'html',
success: function(html) {
var $stfflistdiv = $(html).find('#stfflistdiv');
if ($stfflistdiv.html() == '2') {
$('#staff').html("This roll No is already Saved, Please add another roll no").show();
} else {
$('#staff').html($stfflistdiv).show();
form.submit();
}
},
complete: function() {
$('#sheduling_wait').hide();
}
});
});
});
</script>
注意:
jQuery(function($) {
部分。 jQuery
对象作为第一个参数传递,因此如果您将其命名为$
,则可以安全地使用$
来表示函数内的jQuery
,即使您已调用jQuery.noConflict()
。data
设置,而不是连接自己的查询字符串。它更干净,而且值得到了正确的编码。complete
回调隐藏#sheduling_wait
元素,因为即使出现错误,complete
也会执行。