Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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
Php 使单选按钮成为用户所需的选择_Php_Html - Fatal编程技术网

Php 使单选按钮成为用户所需的选择

Php 使单选按钮成为用户所需的选择,php,html,Php,Html,我有5个单选按钮,提供一系列值: <input type="radio" name="bookperiod" id="bookperiod" value="1"/>1<br> <input type="radio" name="bookperiod" id="bookperiod" value="2"/>2<br> <input type="radio" name="bookperiod" id

我有5个单选按钮,提供一系列值:

        <input type="radio" name="bookperiod" id="bookperiod" value="1"/>1<br>
        <input type="radio" name="bookperiod" id="bookperiod" value="2"/>2<br>
        <input type="radio" name="bookperiod" id="bookperiod" value="3"/>3<br>    
        <input type="radio" name="bookperiod" id="bookperiod" value="4"/>4<br>    
        <input type="radio" name="bookperiod" id="bookperiod" value="5"/>5<br>
1
2
3
4
5
我希望它确保用户已经选择了它们,因为目前用户无法选择一个,表单仍将提交。虽然我可以让其中一个“选中”,但这可能意味着用户仍然可以提交,而无需实际进行选择


我如何确保当用户点击submit时,用户已经明确选择了他们的其中一项

您可以为用户预先选择一个选项,然后用户将被迫选择另一个选项或接受第一个选项

    <input type="radio" checked name="bookperiod" id="bookperiod" value="1"/>1<br>
    <input type="radio" name="bookperiod" id="bookperiod" value="2"/>2<br>
    <input type="radio" name="bookperiod" id="bookperiod" value="3"/>3<br>    
    <input type="radio" name="bookperiod" id="bookperiod" value="4"/>4<br>    
    <input type="radio" name="bookperiod" id="bookperiod" value="5"/>5<br>
1
2
3
4
5

这是一个典型的应用程序用例

即使禁用了JavaScript,如果没有选择单选按钮,现代浏览器也不允许您提交表单

<form action="">
    <input type="radio" name="bookperiod" id="bookperiod" value="1" required />1<br />
    <input type="radio" name="bookperiod" id="bookperiod" value="2" required />2<br />
    <input type="radio" name="bookperiod" id="bookperiod" value="3" required />3<br />    
    <input type="radio" name="bookperiod" id="bookperiod" value="4" required />4<br />    
    <input type="radio" name="bookperiod" id="bookperiod" value="5" required />5<br />

    <button type="submit">Submit</button>
</form>

我觉得所有这些答案都很难通过。首先:您不能有多个具有相同ID的元素。请将其更改为一个类或唯一地标记每个元素

不能跳过PHP检查。必须始终做到这一点。请阅读与服务器端和客户端相关的内容,尤其是关于验证的内容。我不想在这里讨论

添加客户端(Javascript)检查只是为了方便用户。这允许用户在点击提交按钮并在服务器上等待之前知道表单不完整

这可以通过多种方式来实现,甚至更多

  • 添加一个附加的单选按钮,使用CSS关闭可见性或显示。默认情况下会选中此选项。使用javascript,您可以看到这是否仍然是选中的单选按钮(表示用户尚未选择可见按钮之一)=>显示错误

  • 迭代每个单选按钮,确保其中一个按钮标记为选中(标准
    if
    在for循环内)未测试的jqyery代码

    function validateBookPeriod() {
        var bookperiodSelected = false;
        $('.bookperiod').each(function(){
            if($this.attr('checked') == checked) bookperiodSelected=true;                 
        });
    
        if (bookperiodSelected == false)
            alert('Please select a book period!');
    }
    validateBookPeriod();
    

  • 可以为它们预先选择一个吗?使用JavaScript确保选择其中一个。。。但仍然可以禁用JavaScript以绕过此检查。旁注:ID在HTML中应该是唯一的,所以你真的不应该有5个具有相同ID的单选按钮(但它们需要相同的名称才能正常工作)。javascript:默认情况下禁用submit,在任何单选按钮单击时启用它。正如@Powerlord所说,你可以使用javascript来完成这一点,作为附带检查,您还可以检查是否至少有一个单选按钮已通过PHP检查。@briosheje不太确定您是否可以检查多个同名单选按钮。在发布答案之前,请学习阅读整个问题:虽然我可以将其中一个问题“选中”,但这可能意味着用户仍可以提交而不必进行实际选择。;)不仅如此,使用
    checked
    对我来说就像是一种黑客行为。请注意,这只适用于支持的浏览器。@AndersG:这就是为什么我想知道“什么……我以前从未见过这种情况”?洛丽丝很好,但不生气-browser@Wh1T3h4Ck5是的,但符合标准。请使用JS为不支持的浏览器自行验证表单–正如过去十年中任何web开发人员所做的那样…完全同意您的意见,只是注意到了一个事实。在
    $this.attr('checked')==checked
    中,没有定义
    $this
    checked
    。不必使用jQuery只测试
    checked
    属性,因为可以直接从
    this.checked===true
    读取该状态。
    function validateBookPeriod() {
        var bookperiodSelected = false;
        $('.bookperiod').each(function(){
            if($this.attr('checked') == checked) bookperiodSelected=true;                 
        });
    
        if (bookperiodSelected == false)
            alert('Please select a book period!');
    }
    validateBookPeriod();