【问题标题】:Javascript null input errorJavascript空输入错误
【发布时间】:2015-11-17 07:15:26
【问题描述】:

我有这个输入框

  html +='<p style="font-size: 18px; ">Total Bids: <input type="text" class="total_bids" name="total_bids" placeholder="No. of Bids" required></p>';

还有按钮

html += '<a style="cursor:pointer;" onclick="'+onclick_url_bid_o_matic+'" class="btn-bidoo" id="btn-bidoo">Activate</a>';

我通过

获取输入字段的值
var totalbids = document.getElementsByName('total_bids')[0].value;

如果用户输入一个数字,它可以正常工作,但如果用户没有输入任何内容并按下激活按钮,则会出现此错误,

TypeError: 无法读取 null 的属性“样式”

我想限制用户输入某些内容,我已经在输入字段中应用了 required 但这不起作用,(我不知道为什么)任何其他可以限制用户输入内容的检查?

编辑:

我在 php 中得到了这个值,我也在那里进行了检查,

 $total_bids = PSF::requestGetPOST('totalbids');

if(!$total_bids)
        {
            return json_encode(array('error' => 'enter a number'));
        }

但它没有到达这里,因为它停止了空值错误

按钮通向此功能

bid_o_matic:function(id, uid, e, evt){

            var totalbids = document.getElementsByName('total_bids')[0].value;
            var bidval = document.getElementsByName('bidvalue')[0].value;


            parent_element = $(e).parent().parent();


            if(typeof(evt) != 'undefined'){
                evt.preventDefault();
                evt.stopPropagation();
            }
            if(e.attr('disabled') == 'disabled'){
                return;
            }
            e.button('loading');
            $.post('index.php', {
                page:'__request',
                module:'PSF_auctions',
                action:'make_bid_o_matic',
                id:id,
                uid:uid,
                totalbids: totalbids,
                bidval: bidval
            }, function(d){
                e.button('reset');
                document.getElementById("btn-bidoo").style.visibility = 'hidden';
                document.getElementById("btn-deactivate").style.visibility = 'visible';
                document.getElementById("totalbids").style.visibility = 'hidden';
                document.getElementById("bidvalue").style.visibility = 'hidden';

                if(d.error){
                //        document.getElementById("totalbids").style.visibility = 'visible';
                // document.getElementById("bidvalue").style.visibility = 'visible';
                     $.auctions.alert(d.error);
                    document.getElementById("btn-bidoo").style.visibility = 'visible';
                    document.getElementById("btn-deactivate").style.visibility = 'hidden';

                }
                else
                {
              $(current_price_element).html('<p style="color:#f47321; font-size:16px; font-weight:bold;">Current Price</p><a href="#">'+d.bid_value+'</a>')

                }

            }, 'json');
        },

并且错误发生在这一行

 document.getElementById("totalbids").style.visibility = 'hidden';

【问题讨论】:

  • 您不会在提供的代码中的任何位置读/写style 属性。
  • 我认为错误在另一个地方。因为在您的代码中您没有访问Style 属性
  • 我没有,我只是获取用户通过 getelementsbyname 输入的值
  • 你能发布函数onclick_url_bid_o_matic的代码
  • @wonderbell 刚刚做了

标签: javascript html validation


【解决方案1】:

这是因为total_bids 是您输入的class 而不是id。您没有任何名为 totalbidsid。当您尝试使用id 查找对象时,例如totalbids,您一无所获。要解决它,请像这样更改您的输入。

&lt;input type="text" id="totalbids" class="total_bids" name="total_bids" placeholder="No. of Bids" required&gt;&lt;/p&gt;

或使用

document.getElementsByName('total_bids')[0].style.visibility = 'hidden'

【讨论】:

  • @ShailendraSharma 我认为这是正确的答案。 OP 正在尝试在错误行通过 id 访问元素。请参阅已编辑的问题。 document.getElementById("totalbids").style.visibility = 'hidden'; 其他地方,都是按名称访问。请花点时间投反对票。 @Faizan 请试试这个答案。
  • 是的,我的错。我没有提供身份证。
  • @wonderbell document.getElementById("totalbids").style.visibility = 'hidden';写在成功块中,正如问题中提到的“如果用户输入一个数字,它工作正常”你能解释一下吗?
  • @ShailendraSharma 是的,它工作正常,它根据需要将数字发送到 php 代码,这个 document.getElementById("totalbids").style.visibility = 'hidden';旨在隐藏此输入字段,与工作无关,顺便说一句,它并没有隐藏此输入字段,在我的情况下,问题是我没有提到 ID。
  • "TypeError: Cannot read property 'style' of null" 应该存在于制作大量场景的作品中
【解决方案2】:

因为你做错了。您实际上是使用 HYPERLINK 将表单发布到服务器端

html += '<a style="cursor:pointer;" onclick="'+onclick_url_bid_o_matic+'" class="btn-bidoo" id="btn-bidoo">Activate</a>';

这是提交表单的错误方式。用您的实际输入提交按钮替换它。然后它将验证您的文本字段

    html += '<input type="submit" class="btn-bidoo" id="btn-bidoo" value="Activate" />';

并在表单标签上设置 onclick_url_bid_o_matic URL

html += '<form action="' + onclick_url_bid_o_matic + '" method="post">'

或者如果您仍然想使用超链接标签,请在 Javascript/Jquery 的帮助下提交您的表单

这就是你在请求的 URL 中得到 NULL 的原因

【讨论】:

  • 调用到达函数内部的代码。你的答案没有意义
  • 他提供的问题,借助Javascript生成HTML代码。然后尝试通过单击超链接标签来发布表单。这是无效的。这就是 HTML5 验证不起作用的原因。
猜你喜欢
  • 2011-11-04
  • 2018-09-06
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2020-02-21
  • 2023-03-15
相关资源
最近更新 更多