【问题标题】:Radio Button not Working in ie单选按钮在 ie 中不起作用
【发布时间】:2016-01-28 20:20:10
【问题描述】:

我的表单中有 4 个单选按钮,一旦我提交表单,任何单选按钮都应选中,否则将显示警告消息。它在 chrome、firefox 中正常工作,但在 ie 中,我检查了它总是显示警报的 radion,所以我无法提交表单,我在下面给出了我的代码,请帮助我

PHP:

<form action="user_register.php" method="POST" name="myForm" onsubmit="return validateForm()" enctype="multipart/form-data">
    <label>USERNAME:</label></td>
    <input type="text" name="username" class="regtext" required/>
    <label>RESIDING CITY:</label></td>
    <input type="text" name="city" class="regtext" required/>
    <label>I'M A</label>
    <label>ARTIST &nbsp <input type="radio" value="1" name="user_type" >    </label>&nbsp
    <label>MODEL &nbsp <input type="radio" value="2" name="user_type"></label>&nbsp
    <label>COMPOSER &nbsp <input type="radio" value="3" name="user_type" ></label>&nbsp<br>
    <label>BEAT MAKER &nbsp <input type="radio" value="4" name="user_type" ></label>&nbsp
    <label>NONE &nbsp <input type="radio" value="0" name="user_type" ></label>
    <label> <input type="checkbox" value="1" name="letter" > &nbsp  I WOULD LIKE TO RECEIVE YOUR NEWSLETTER</label>
    </div>
    <div class="mainhead">
        <input type="submit" name="register" class="submit" value="SEND AND REGISTER NOW">
    </div>
</form>

JS:

<script type="text/javascript">
    function validateForm() {
        var province = document.forms["myForm"]["province"].value;
        if (province == 0 ) {
            alert("Select Province");
            document.myForm.province.focus() 
            return false;
        }
        var user_type = document.forms["myForm"]["user_type"].value;
        if (user_type == null || user_type == "") {
            alert("Select Who You are");
            return false;
        }
        var letter = document.forms["myForm"]["letter"].value;
        if (letter == null || letter == "") {
            alert("Select that you want to receive news letter");
            return false;
        }
    }
</script>

【问题讨论】:

  • 没有名称为province的元素
  • @Rayon Dabre,没关系。我只需要关于 user_type 及其验证
  • 您的 html 无效。也许有问题。删除第 2 行和第 4 行中的 &lt;/td&gt;。同时删除第 13 行中的 &lt;/div&gt;

标签: javascript php html


【解决方案1】:

问题是对于 IE,document.forms["myForm"]["user_type"] 是一个 HTMLCollection 并且没有 value

解决办法是改变

var user_type = document.forms["myForm"]["user_type"].value;

var user_type = document.querySelector('form[name="myForm"] input[name="user_type"]:checked').value;

【讨论】:

  • 在 chrome 中也没有验证
  • 你把省改成城市了吗?这很重要。
【解决方案2】:

我观察到的是:

代码中没有名称province(您提供的)。如果在此处包含它,它将不起作用。

<script type="text/javascript">
function validateForm() {
    var province = document.forms["myForm"]["province"].value;
    if (province == 0 ) {
        alert("Select Province");
        document.myForm.province.focus() 
        return false;
    }
    var user_type = document.forms["myForm"]["user_type"].value;
        if (user_type == null || user_type == "") {
        alert("Select Who You are");
        return false;
    }
    var letter = document.forms["myForm"]["letter"].value;
        if (letter == null || letter == "") {
        alert("Select that you want to receive news letter");
        return false;
    }
}
</script>

删除province 验证后。它开始工作了。

<script type="text/javascript">
function validateForm() {

    var user_type = document.forms["myForm"]["user_type"].value;
        if (user_type == null || user_type == "") {
        alert("Select Who You are");
        return false;
    }
    var letter = document.forms["myForm"]["letter"].value;
        if (letter == null || letter == "") {
        alert("Select that you want to receive news letter");
        return false;
    }
}
</script>

所以,正如Rayon Dabre 先生 所说,“没有名称为省的元素”。所以,我也同意他的看法。从 validateForm() 函数中删除 province 验证(因为它没有在 &lt;from&gt;&lt;/form&gt; 中使用)

【讨论】:

    【解决方案3】:

    这段代码应该可以解决问题:

    function validateForm() {
    
        var user_type = document.getElementsByName('user_type');
        var u_type = '';
    
        for (var i = 0, length = user_type.length; i < length; i++) {
            if (user_type[i].checked) {
                // do whatever you want with the checked radio
                u_type = user_type[i].value;
    
                // only one radio can be logically checked, don't check the rest
                break;
            }
        }
    
        if (u_type == "") {
            alert("Select Who You are");
            return false;
        }
        var letter = document.getElementsByName('letter')[0].checked;
    
        if (letter == "" || letter == undefined) {
            alert("Select that you want to receive news letter");
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 1970-01-01
      • 2012-11-16
      • 2023-03-20
      • 2012-10-03
      • 2014-02-21
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多