【问题标题】:Check if placeholder text already exists within a string检查字符串中是否已存在占位符文本
【发布时间】:2013-03-01 23:04:41
【问题描述】:

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

我的问题:

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

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

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

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

有没有办法检查#error 消息中是否已经存在占位符文本? Here's a fiddle。我很抱歉,它是如此令人费解。但这是我一直在努力的,并且很方便。

提前感谢您的帮助!

【问题讨论】:

  • .indexOf($('#error')) 为什么要将对象传递给indexOf 方法?
  • input.attr('placeholder').indexOf($('#error')) 将始终为 -1,除非您的字符串包含 [object Object],也许您的意思是 $("#error').text()
  • 能不能每次都用 .html() 或 .text() 覆盖 div 的内容?

标签: javascript jquery html


【解决方案1】:

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);

【讨论】:

  • 完美运行!感谢您抽出宝贵时间!
【解决方案2】:

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

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");

感谢 ;)

【讨论】:

    【解决方案3】:

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

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

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

    关于搜索字符串以查找其他字符串in this question. 的讨论更长了

    【讨论】:

      【解决方案4】:

      看来你做错了(忘记从#error元素中取出text):

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

      【讨论】:

        猜你喜欢
        • 2014-12-11
        • 1970-01-01
        • 1970-01-01
        • 2011-09-30
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多