为cordova动态创建的输入字段应用maxlength

时间:2016-03-04 22:37:44

标签: javascript jquery cordova

我正在尝试在Android手机上使用cordova加载表单。下面的方法将返回调用者的表单元素。 fldObj将包含字段属性。

其中一个属性maxlength无效。谷歌搜索时我明白maxlength不起作用,而是我们必须使用jQuery keyup来验证。

function renderBasicInput(fldObj,grpDivId){
    var strFld = '';
    var strIdVal = grpDivId+'_fld___'+fldObj.name;

    strFld = '<input type="'+ fldObj.type +'" maxlength="'+fldObj.maxlength+'" name="'+ strIdVal +'" id="'+ strIdVal +'" value="" placeholder="'+ fldObj.description+'"';
    if(fldObj.required == 'true' || fldObj.required == 1)
        strFld += ' required '
    strFld += '/>';

    return strFld;
}

在动态渲染输入字段时,我该怎么做?

3 个答案:

答案 0 :(得分:0)

我设法通过返回内联javascript代码来解决

if(fldObj.maxlength){
  strFld += "<script> .....jquery code to validate on keyup.... </script>";
}
return strFld;

调用者将获得input元素以及一个将验证字段为maxlength的脚本。

答案 1 :(得分:0)

首先,将此处理程序绑定到任何所需的事件。

将一些类“.form-group”添加到输入控件的div中,你可以这样做:

             $(" .form-group").find('input[type="text"], input[type="email"], textarea').each(function () {

            value = $.trim($(this).val());


            //if current input type is email and not empty, check for validity
            if ($(this).is('input[type="email"]')) {

                //Do something here
            }

        });

答案 2 :(得分:0)

我不熟悉使用keyup作为解决方案的建议,但我怀疑它是建议它,以便您可以在操作员键入每个字符时测量长度。

我尝试从上面复制/粘贴您的代码,但在编辑时无法正确显示。所以我只包括这些变化 - 希望这会让你更容易。

我对你的strFld声明做了两处修改。 1)我添加了一个&#34; mytest&#34; class - 无论你喜欢什么,都可以调用它,但后来我们将keyup事件附加到此。 2)maxlength变为data-maxlength。

我创建了一个名为checkLength的新函数。

最后,应用了keyup事件。将输入标记插入DOM后应用此选项非常重要。因此,我假设您在某处编写strFld到页面(DOM)。插入输入标记后必须应用事件。

这一切做什么?请参阅代码,然后在下面阅读以获得解释......

strFld = '<input type="'+ fldObj.type +'" class="mytest" data-maxlength="'+fldObj.maxlength+'" name="'+ strIdVal +'" id="'+ strIdVal +'" value="" placeholder="'+ fldObj.description+'"';

function checkLength()
{
  var maxlen=Number( $(this).data("maxlength") );

  if( $(this).val().length > maxlen )
  { alert("Maximum data input limited to "+maxlen+" characters");
    return false;
  }
  return true;
}

$("input.mytest").keyup( checkLength );

每次用户将字符输入到具有类mytest的输入框时,都会执行keyup事件。事件是checkLength()。

checkLength将maxlen定义为一个数值变量,它等于data-maxlength中的值。这将为您提供灵活性 - 它允许您为每个输入框设置不同的最大长度。

条件语句(&#39; if&#39;语句)表示如果用户输入的长度大于maxlen,则喊出警报,否则,静静地继续。每次将字符输入到具有类mytest的输入框中时,事件都会重复。

最后,尝试一下;在所有javascript命令的最后。此外,当您有条件语句时,请确保在括号内插入您的操作。因此, if(condition){actions} 而不是 if(condition)actions 我建议这是为了便于阅读。你现在可能知道自己在写什么了,但是几个月后,你会问自己,你行动正下方的第二行是否应该被执行。括号清楚地说明了什么是和不包括在内。分号表明行结束的地方!

祝你好运

(更多关于keyup:http://api.jquery.com/keyup/