Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在某些字段上禁用Dojo验证_Javascript_Validation_Dojo - Fatal编程技术网

Javascript 在某些字段上禁用Dojo验证

Javascript 在某些字段上禁用Dojo验证,javascript,validation,dojo,Javascript,Validation,Dojo,我想对我的用户表单中的某些字段禁用客户端验证。目前,我有两组字段,它们根据上一个下拉列表的值显示。i、 e.如果下拉列表设置为“A”值,则表格中会出现1个新字段。如果下拉列表设置为值“B”,则表单中会出现3个新字段(当选择“A”时,与新表单字段互斥)。目前,我的Dojo客户端验证失败,因为未向用户显示的字段(因此无法将数据插入这些字段)无法验证 目前我确定可以将“validate”属性设置为返回true,如下所示: <input type="text" id="companycity" n

我想对我的用户表单中的某些字段禁用客户端验证。目前,我有两组字段,它们根据上一个下拉列表的值显示。i、 e.如果下拉列表设置为“A”值,则表格中会出现1个新字段。如果下拉列表设置为值“B”,则表单中会出现3个新字段(当选择“A”时,与新表单字段互斥)。目前,我的Dojo客户端验证失败,因为未向用户显示的字段(因此无法将数据插入这些字段)无法验证

目前我确定可以将“validate”属性设置为返回true,如下所示:

<input type="text" id="companycity" name="companycity" class="textinput" value="<?php echo set_value('companycity'); ?>" style="<?php if(isset($errorData['companycity'])){echo $errorData['companycity'];} ?>"
            dojotype="dijit.form.ValidationTextBox"
            required="true" trim="true" validate='return true'"
            regexp="([a-zA-Z]{1,25})"
            invalidMessage="Invalid value.  Must be between 1 and 25 alphabetic characters long.">
这只是将属性设置为nothing。然而,这在firebug中给出了错误,说validate method not found,所以我认为这意味着我没有正确删除此属性,或者删除此属性不是执行此操作的适当方式

我还研究了重写验证器方法,但这似乎也不是我想要的。我不想重写所有的验证方法来代替dojo


我只是希望dojo不要验证用户是否看不到该字段。谢谢你的建议和帮助。

我认为我做得不对。”“validate”和“validator”不是dojo ValidationTextBox的适当属性。它们都会以“this.validate不是函数”的形式在Firebug中抛出错误。所以一开始它看起来对我很有效,因为它不再试图验证字段,但这只是因为抛出了错误

更好的解决方案是在加载时将“required”属性设置为false

<input type="text" id="companycode" name="companycode" class="textinput" value="<?php echo set_value('companycode'); ?>" style="<?php if(isset($errorData['companycode'])){echo $errorData['companycode'];} ?>"
            dojotype="dijit.form.ValidationTextBox"
            required="false" trim="true" 
            regexp="(^[A-Za-z]{2}-[0-9]{5}$)"
            invalidMessage="Invalid value.  Must be a valid company code of the form EX-00000">

我断定我做得不对“validate”和“validator”不是dojo ValidationTextBox的适当属性。它们都会以“this.validate不是函数”的形式在Firebug中抛出错误。所以一开始它看起来对我很有效,因为它不再试图验证字段,但这只是因为抛出了错误

更好的解决方案是在加载时将“required”属性设置为false

<input type="text" id="companycode" name="companycode" class="textinput" value="<?php echo set_value('companycode'); ?>" style="<?php if(isset($errorData['companycode'])){echo $errorData['companycode'];} ?>"
            dojotype="dijit.form.ValidationTextBox"
            required="false" trim="true" 
            regexp="(^[A-Za-z]{2}-[0-9]{5}$)"
            invalidMessage="Invalid value.  Must be a valid company code of the form EX-00000">

ValidationTextBox期望validator是一个函数,因此,尽管您可以在标记中为它指定一个字符串值,但实际发生的情况是,在创建实例时,字符串正在转换为函数。需要设置是正确的方法,但为了安全起见,我建议使用

dijit.byId("companycode").attr("required", true/false)

…以确保小部件中的状态正确更新

ValidationTextBox期望validator是一个函数,因此,尽管您可以在标记中为它指定一个字符串值,但实际发生的是,在创建实例时,字符串正在转换为函数。需要设置是正确的方法,但为了安全起见,我建议使用

dijit.byId("companycode").attr("required", true/false)

…以确保小部件中的状态正确更新

我最初尝试过这种方法,但它不再正确评估。它将所需属性设置为“true”(string)而不是true(bool)。我最初尝试了这种方法,但它的计算结果不再正确。它将所需属性设置为“true”(字符串)而不是true(bool)