Php 使单选按钮成为用户所需的选择
我有5个单选按钮,提供一系列值: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
<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)检查只是为了方便用户。这允许用户在点击提交按钮并在服务器上等待之前知道表单不完整 这可以通过多种方式来实现,甚至更多
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();