Jquery停止后重复我的代码?

时间:2014-01-16 13:44:19

标签: javascript jquery html

我的输入和Jquery有问题:

基本上我有这段代码:

HTML

<form id="formUser">
    <div class="row">
        <div class="small-8">
            <div class="row">
                <div class="small-6 columns">
                    <label for="right-label" class="right inline">First name</label>
                </div>
                <div class="small-6 columns">
                    <input type="text" name="fisrtName" placeholder="First name">
                </div>
            </div>
        </div>
    </div>
    <div class="row text-center">
        <input type="checkbox" class="check"><label for="checkbox"><p>I accept the review agreement</p></label>
        <button type="submit" class="button join">Let's Go !</button>    
    </div>      
</form>

JS

<script type="text/javascript">
    $(function(){
        $("#formUser").submit(function(){
            if(!$('input[name="fisrtName"]').val()) {
                $('input[name="fisrtName"]').addClass("error");
                $('input[name="fisrtName"]').after("<small class='error'>Invalid entry</small>");
            }
        return false;
        });
    });
</script>

我有probleme

当我在按钮上单击几次时...错误类重复.. 如何停止重复或忽略实际的类错误?

4 个答案:

答案 0 :(得分:1)

也许你应该做这样的事情

$("#formUser").submit(function(){

  var $element = $('internal[name="fisrtName]');
  // ^ save this much faster ^
  // ^ you have spelt firstName wrong also ^

  // check val and check next element isn't error
  if($element.val() && $element.next().hasClass('error') === false) {
    $element.addClass('error').after("<small class='error'>Invalid entry</small>");
  } else {
     // now remove it if you need to
  }
  return false;
});

希望它有所帮助。

您应该始终缓存元素

通过这样做:

$('internal[name="fisrtName');
$('internal[name="fisrtName');
$('internal[name="fisrtName');

当你需要时,你正在调用jQuery函数 3

答案 1 :(得分:0)

您可以使用:

 if($('input[name="fisrtName"]').find('.error').length==0)
 $('input[name="fisrtName"]').after("<small class='error'>Invalid entry</small>");

答案 2 :(得分:-1)

或者:

var $firstName = $('input[name="fisrtName"]');
if (!$firstName.hasClass("error")) {
    $firstName.addClass("error");
    $firstName.after("<small class='error'/>");
}
$firstName.find("small.error").text("Invalid entry");

答案 3 :(得分:-2)

尝试用这个来改变你的代码,我已经找到了行“$('small.error')。remove();”

$.q("#formUser").submit(function(){
    if(!$.q('input[name="fisrtName"]').val()) {
        $.q('small.error').remove();
        $.q('input[name="fisrtName"]').addClass("error");
        $.q('input[name="fisrtName"]').after("<small class='error'>Invalid entry</small>");
    }
return false;
});