检查占位符文本是否已存在于字符串中

时间:2013-03-13 19:46:54

标签: javascript jquery html

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

我的问题:

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

  

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

我已经寻找其他解决方案并试过了:

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

有没有办法检查#error消息中是否已存在占位符文本? Here's a fiddle。对不起它真是令人费解。但它是我一直在努力的东西,并把它放在手边。

提前感谢您的帮助!

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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");

Saludos;)

答案 2 :(得分:0)

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

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

如果#error包含a_string,则会返回true。

关于搜索其他字符串in this question.

的字符串的讨论时间较长

答案 3 :(得分:0)

看起来你正在以错误的方式进行(并且忘记从#error元素中取出text):

if ( $('#error').text().indexOf( input.attr('placeholder') ) >= 0)