jQuery addClass()只有在它之前有一个alert()框时才有效

时间:2015-08-17 05:13:05

标签: jquery jsp addclass event-bubbling

我有按钮如下 -

Option Explicit

Sub test()
    UserForm1.ListBox1.RowSource = ActiveSheet.Range("A1:A2")

End Sub

问题:当我在它之前有一个alert()时,addClass方法完全正常。但是,没有警报(),没有颜色变化。此外,我尝试使用event.stopPropagation()。这并没有解决我的问题。有人让我知道我在这里失踪了吗?提前谢谢!

4 个答案:

答案 0 :(得分:2)

您的表单似乎已提交,然后页面重新加载,从而清除表单并中止可能已由提交触发的任何脚本。 另外,你最好听一下表单的提交事件,因为可能有其他触发事件的方法,例如ENTER键,以及其他原因

更好的方法是:

<!--HTML-->
<form id="myform" action="...." ...>
.....
<input type="button" value="Submit" id="tab_button1" class="btn btn-info"/>
</form>

//JS
$(function() {
    $('#myform').on('submit', function(e) {
        e.preventDefault();
        //your code goes here
        //you may also want count any unfilled fields and use e.preventDefault()
        //if the # is greater than zero
        //OR use e.preventDefault() at the top
        //then use this.submit() if all fields are filled/provided/checked
    });
});

答案 1 :(得分:0)

onclick=" event.preventDefault();validateAllAnswers(event);"。你必须停止提交表格。然后只有该功能才能正常工作。验证后,您必须使用$("form")[0].submit()

手动提交

答案 2 :(得分:0)

我认为您的代码无法验证,请参阅该段代码,

var isCompleteTabOne = true;
var isCompleteTabTwo = true;
var isCompleteTabThree = true;
var flag = true;
// isCompleteTabOne and isCompleteTabTwo both are true here
if(isCompleteTabOne == false && isCompleteTabTwo == false)

此外,如果您使用jquery,请使用on()绑定点击事件,例如

$(function(){
    $('#tab_button1').on('click',function(){
        // your validation code
    });
});

当您使用按钮时,不需要阻止默认行为也没有父元素,因此请避免使用stopPropagation()

答案 3 :(得分:0)

认为正在发生的事情是表单正在提交,而不是注意 addClass。当你发出警告时,它会暂时停止执行。所以,你可以看到变化。我们需要停止提交,以便您可以看到更改。这听起来不错吗?

您可以尝试在函数中添加return false; ......即

function validateAllAnswers(e) {
  e.preventDefault();
  // Do whatever
  return false;
}

这将停止重定向/提交发生。

然后,您可以在两者之间添加任何代码,并在验证后提交。