标记需要的单选/复选框按钮

Posted

技术标签:

【中文标题】标记需要的单选/复选框按钮【英文标题】:Mark radio/checkbox buttons required 【发布时间】:2021-06-02 08:27:09 【问题描述】:

我想在以下复选框中添加一些规则:

<form action="% url 'payment' item.slug %" method="POST">

    % csrf_token %
    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" required name="half_price" id='c01'  value="item.half_price" onclick="check(this);" style=" margin-top: 20px; "% if item.half_price % % else % disabled % endif % > Half: ₹ item.half_price /- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" required name="full_price" id='c02' value=item.full_price onclick="check(this);" % if item.full_price % % else % disabled % endif %>  Full : ₹ item.full_price /- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">
 </form>
    如果我的某件商品未标记为半价,则该复选框将被禁用,网页将继续根据需要询问复选框。 现在假设我从半价中删除“必需”并且我的产品有半价,我选中半价复选框并单击“添加按钮”,它说全价是强制性的。 如果我从两者中删除 required ,并且用户没有点击任何复选框并点击提交按钮,我在后端没有任何价值。

值得注意的是,我有 jQuery,其中限制用户只能选择一个复选框。

【问题讨论】:

为什么你的输入被包裹在标题标签中?为什么您的输入包含在标签标签内?此标记处于另一个级别... 如果可以的话尽量避免与 html 冲突,听起来你真的想要一个radio button group。 【参考方案1】:

您可以在输入点击时编写一个函数来检查您的复选框验证(如果您不想更改您的 html)。

var validateBeforePost = function()
  var chkCount =  document.querySelectorAll('input.radioCheck[type="checkbox"]:checked');
  if(chkCount.length == 0 || chkCount.length > 1 )
    alert('Select single valid price'); 
    return false;
  
  return true;


//check  
function check()
<form>
<label class="radio-inline">
                    <h5> <input type="checkbox" class="radioCheck"  name="half_price" id='c01'  value="item.half_price" onclick="check(this);" style=" margin-top: 20px; "> Half: ₹ item.half_price /- </h5>
                    <span class="checkmark"></span>
                </label>
                
                <label class="radio-inline">
                    <h5> <input type="checkbox" class="radioCheck"  name="full_price" id='c02' value=item.full_price onclick="check(this);" >  Full : ₹ item.full_price /- </h5>
                    <span class="checkmark"></span>
                </label>
                <input style="margin-left: 10px;" type="submit" class="button" onclick="return validateBeforePost();"  value="ADD">
 </form>

【讨论】:

谢谢,这应该对我有用。谢谢,我真的很感激先生。并感谢您很好地理解我的问题。【参考方案2】:

为什么不只在half_price 可用时才要求它。

<input type="checkbox" name="half_price" value="item.half_price"
  % if item.half_price % required % else %  disabled % endif % 
>

full_price 也一样

<input type="checkbox" name="full_price" value="item.full_price"
  % if item.full_price % required % else %  disabled % endif % 
>

编辑:

需要进行更改。

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="half_price" id='c01'  value="item.half_price" onclick="check(this);" style="margin-top: 20px;" % if item.half_price %required% else %disabled% endif % > Half: ₹ item.half_price/- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="full_price" id='c02' value=item.full_price onclick="check(this);" % if item.full_price %required% else %disabled% endif % >  Full : ₹ item.full_price/- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

有数据

  item: 
    half_price: 40,
    full_price: 80 
  

会翻译成

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="half_price" id='c01'  value="40" onclick="check(this);" style="margin-top: 20px;" required > Half: ₹ 40/- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="full_price" id='c02' value=80 onclick="check(this);" required >  Full : ₹ 80/- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

对于数据

  item: 
    half_price: 40
  

将转换为

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="half_price" id='c01'  value="40" onclick="check(this);" style="margin-top: 20px;" required > Half: ₹ 40/- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="full_price" id='c02' value= onclick="check(this);" disabled >  Full : ₹ /- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

对于数据

  item: 

会翻译成

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="half_price" id='c01'  value="" onclick="check(this);" style="margin-top: 20px;" disabled > Half: ₹ /- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="checkbox" class="radioCheck" name="full_price" id='c02' value= onclick="check(this);" disabled >  Full : ₹ /- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

更新: 在 cmets 中解决问题。 如果您只想要这些值,那么这些就是需要进行的更改。

    <label class="radio-inline">
        <h5> <input type="radio" class="radioCheck" name="price" id='c01'  value="item.half_price" onclick="check(this);" style="margin-top: 20px;" % if item.half_price %required% else %disabled% endif % > Half: ₹ item.half_price/- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="radio" class="radioCheck" name="price" id='c02' value=item.full_price onclick="check(this);" % if item.full_price %required% else %disabled% endif % >  Full : ₹ item.full_price/- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

对于数据

  item: 
    "half_price": 80,
    "full_price": 160
  

会翻译成

    <label class="radio-inline">
        <h5> <input type="radio" class="radioCheck" name="price" id='c01'  value="80" onclick="check(this);" style="margin-top: 20px;" required > Half: ₹ 80/- </h5>
        <span class="checkmark"></span>
    </label>

    <label class="radio-inline">
        <h5> <input type="radio" class="radioCheck" name="price" id='c02' value=160 onclick="check(this);" required >  Full : ₹ 160/- </h5>
        <span class="checkmark"></span>
    </label>
    <input style="margin-left: 10px;" type="submit" class="button" value="ADD">

【讨论】:

如果商品有半价和全价,那么先生?这两个复选框都是必需的。 如果两者都存在,则需要为两者启用 @faijanmemon 编辑后的答案是否解决了您的问题? 还不确定先生,如果我只想在我的购物车中添加半个呢?它也会问我完整的,对吗?? 我希望一次只添加一个项目,并且需要使其成为必需的 b'caz 我在后端获取这些值,如果用户不选择任何值,那么我会面对有一个错误,所以我必须使它成为必需,以便在他选择之后只有他才能走得更远,【参考方案3】:

首先,您不应该要求 jQuery 一次选中一个复选框。为两个复选框保持相同的“名称”属性将起作用。 当您保持复选框的名称属性相同时,将“已选中”属性添加到“全价”复选框,以便在页面加载时始终选中它。如果您的条件没有禁用“半价”复选框,用户可以选择选中它。

【讨论】:

以上是关于标记需要的单选/复选框按钮的主要内容,如果未能解决你的问题,请参考以下文章

MFC的单选按钮、复选框问题

checbox复选框实现radio单选框的单选功能

Google Chrome 中的单选按钮和复选框异常行为

如何使复选框的行为类似于角度 6 中的单选按钮?

带有 Laravel 的标签内的单选和复选框

javascript中的单选按钮验证