【问题标题】:Javascript Empty field validation - Cannot read property 'value' of undefinedJavascript空字段验证-无法读取未定义的属性“值”
【发布时间】:2015-01-28 16:49:36
【问题描述】:

我已经研究了几天,并从这里举了几个例子来验证日期字段的解决方案,以确保在转到下一页之前它不为空。但一直无法读取未定义的属性,我尝试使用 Joomla build validate.js,它在这个自定义组件中不起作用,我希望在这里能得到一些帮助来解决这个问题。

这是javascript

nextpage:function(){
var deliveryy=document.getElementsByName("customPlugin")[0].value;

    if(delivery == "" || delivery == null) {
    alert("filled out All Delivery Date & Time"); 
return false; } else { .........

这是点击按钮

<button type="button" id="productbuilder_next" class="productbuilder_pagination pbbutton btn" onclick="productbuilder.nextpage();"> Next</button>

这是我试图验证它不为空的字段的原始数据

<input id="<?php echo $class.$rand ?>" class="required <?php echo $class ?>" required="true" type="text" value="" size="<?php echo $this->params->custom_size ?>" name="customPlugin[<?php echo $viewData[0]->virtuemart_customfield_id ?>][<?php echo $this->_name?>][comment]"><?php if($this->params->custom_populate_alternate_field){?>&nbsp;<input type="text" id="alternate<?php echo $rand?>" size="30">

生成

<input id="vmcustom-datetime1930516000" class="required vmcustom-datetime hasDatepicker" required="true" type="text" value="" size="10" name="customPlugin[176][datetime][comment]">

【问题讨论】:

  • 您正在寻找一个名为 "customPlugin" 的元素。您有一个名为 "validDelivery customPlugin[176][datetime][comment]" 的元素。你为什么会期望它匹配?
  • 随机生成元素 id 有什么特别的原因吗?
  • @Paul Roub。感谢您的输入。不,validDelivery 元素是一个错误。
  • @Craicerjack。随机id由自定义组件生成..
  • @user1833676 好的,但必须如此,你能删除 php 并给它你自己的 id 吗?

标签: javascript jquery validation joomla2.5 virtuemart


【解决方案1】:

您正在寻找 DOM 中不存在的名称。这样访问属性值的时候就会抛出这个错误。

这里可以使用类。只需在您的元素中添加一个类并在您的函数中搜索它。

HTML:

<input id="vmcustom-datetime1930516000" class="required validDelivery vmcustom-datetime hasDatepicker" required="true" type="text" value="" size="10" name="customPlugin[176][datetime][comment]">

JS:

var validDelivery = document.getElementsByClassName("validDelivery")[0].value;

JSFiddle:http://jsfiddle.net/t1g7cfrb/1/

试一试,如果有帮助,请告诉我!

【讨论】:

  • 很高兴有帮助! :)
【解决方案2】:

您的元素名称是“validDelivery customPlugin[176][datetime][comment]”

你想用 getElementsByName("customPlugin") 来处理它。这是不正确的。

例如,您可以将类 customPlugin 添加到元素并使用 getElementsByClassName("customPlugin")[0] 处理它。

【讨论】:

  • 感谢您的意见。我已经尝试过 setElementsByClass、ById、ByName 以及此处建议的所有不同方法。但是我一直收到无法读取属性错误,或者当没有错误时,即使字段不为空,页面也会返回 false 或即使为空也提交。
猜你喜欢
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多