0

我有一个#error 段落。每次提交时表单中都有错误。输入占位符文本被添加到#error 段落中。

我的问题:

每次用户单击提交时都会发生这种情况。所以#error 消息返回:

请填写您的名字,姓氏,公司,职位,名字,姓氏,公司,职位,名字,姓氏,公司,职位,名字,姓氏,公司,职位,名字,姓氏,公司, 职位, 名字, 姓氏, 公司, 职位,

我已经寻找其他解决方案并尝试了这个:

if (input.attr('placeholder').indexOf($('#error')) >= 0){
} else{
     $('#error').append(input.attr('placeholder').toLowerCase() + ', ');
}

有什么方法可以检查#error 消息中是否已经存在占位符文本?这是一个小提琴。我很抱歉,它是如此令人费解。但它是我一直在努力的,并且很方便。

提前感谢您的帮助!

4

4 回答 4

2

http://jsfiddle.net/8YgNT/20/

var errorText = '';

//Validate required fields
for (i = 0; i < required.length; i++) {
    var input = $('#' + required[i]);

    if ((input.val() == "") || (input.val() == emptyerror)) {
        input.addClass("tobefixed");
        errornotice.fadeIn(750);

        if (input.attr('placeholder').indexOf($('#error')) >= 0) {
            // do nothing
        } else {
            errorText = errorText + $(input).attr('placeholder').toLowerCase() + ', ';
        }

        input.val(emptyerror);
        errornotice.fadeIn(750);
    } else {
        input.removeClass("tobefixed");
    }
}

$('#error').html('').append('Please fill in your ' + errorText);
于 2013-03-13T20:01:04.523 回答
0

我简单地在你的小提琴中添加了一行,它现在正在工作:

required = ["id_first_name", "id_last_name", "id_firmbox", "id_job_title"];

errornotice = $("#error");
emptyerror = "Please fill out this field.";

$("#startform").submit(function(){
//Validate required fields

$("#error").html("Please fill in your");

for (i=0;i<required.length;i++) {
    var input = $('#'+required[i]);
    if ((input.val() == "") || (input.val() == emptyerror)) {
        input.addClass("tobefixed");        
        errornotice.fadeIn(750);


        // =====Here===== //
        if (input.attr('placeholder').indexOf($('#error')) >= 0){
        } else{
            $('#error').append(input.attr('placeholder').toLowerCase() + ', ');
        }
        // ============== //



        input.val(emptyerror);
        errornotice.fadeIn(750);
    } else {
        input.removeClass("tobefixed");
    }
 }

 if ($(":input").hasClass("tobefixed")) {
    return false;
 } else {
    errornotice.hide();
    return true;
 }
});
$(":input").focus(function(){
 if ($(this).hasClass("tobefixed") ) {
     $(this).val("");
     $(this).removeClass("tobefixed");
 }
});

这条线做所有的伎俩:

$("#error").html("Please fill in your");

萨卢多斯 ;)

于 2013-03-13T20:00:25.327 回答
0

如果您想检查是否#error包含您想知道的字符串,您可以使用

($('#error').text().indexOf(a_string)) != -1

如果#error包含,这将返回 true a_string

关于在这个问题中搜索其他字符串的字符串有更长的讨论。

于 2013-03-13T20:01:22.717 回答
0

看来您做错了(并且忘记了text摆脱#error元素):

if ( $('#error').text().indexOf( input.attr('placeholder') ) >= 0)
于 2013-03-13T20:04:30.060 回答