我正在尝试在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;
}
在动态渲染输入字段时,我该怎么做?
答案 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/)