【问题标题】:Enabling form fields in case of minor在未成年人的情况下启用表单字段
【发布时间】:2017-12-23 09:28:06
【问题描述】:

form field screenshot

我正在从用户那里收集被提名人数据,以便在我的组织中进行提名。表单字段已作为图片附上供您参考。

我使用 iondatepicker 作为日期字段。如果用户为被提名人选择的出生日期是未成年人的年龄,我希望启用未成年人监护人数据的字段。否则,它们应保持禁用状态或值为“NA”。请在下面找到表单字段的代码。

<table>
    <tr>
        <td>
            <div id="result-1">
                <input style="width: 600px;" type="text" value="" name="dob" id="mydate" 
                    data-lang="en" data-years="1925-2018" size="10" maxlength="10" 
                    placeholder='date of birth of nominee (dd/mm/yyyy)' data-format="DD/MM/YYYY" 
                    class="form-control"/>
            </div>
        </td>
    </tr>
    <tr>
        <td style="text-align: left;">
            <b>If Nominee is a Minor, give 
            GUARDIAN's Particulars</b>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_name" id="g_name"  size="30" maxlength="200" 
                placeholder='Guardian Name' class="form-control"/>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_relation" id="g_relation"  size="30" maxlength="200" 
                placeholder='Guardian Relationship with you' class="form-control"/>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_address" id="g_address"  size="30" maxlength="200" 
                placeholder='Guardian Address' class="form-control"/>
        </td>
    </tr>
</table>

【问题讨论】:

  • 请格式化您的代码

标签: javascript forms datepicker


【解决方案1】:

您可以尝试以下解决方案(假设您没有使用任何库,如 jQuery 或 moment.js,它是纯 javascript):

var myDate = document.getElementById('mydate')

myDate.addEventListener('change', function(e){
  var val = e.target.value
  var date = new Date(val)
   
  if ( isNaN( date.getDate())  ){
    alert('Wrong date format!')
    return;
  }
  
  var compareDate = new Date()
  compareDate.setFullYear(compareDate.getFullYear()-18)
  
  
  if(compareDate < date){
     document.getElementById('g_name').value=""
     document.getElementById('g_relation').value=""
     document.getElementById('g_address').value=""
     document.getElementById('g_name').disabled=false
     document.getElementById('g_relation').disabled=false
     document.getElementById('g_address').disabled=false
  }else{
     document.getElementById('g_name').value="NA"
     document.getElementById('g_relation').value="NA"
     document.getElementById('g_address').value="NA"
     document.getElementById('g_name').disabled=true
     document.getElementById('g_relation').disabled=true
     document.getElementById('g_address').disabled=true
  }
})
<table>
    <tr>
        <td>
            <div id="result-1">
                <input style="width: 600px;" type="text" value="" name="dob" id="mydate" 
                    data-lang="en" data-years="1925-2018" size="10" maxlength="10" 
                    placeholder='date of birth of nominee (dd/mm/yyyy)' data-format="DD/MM/YYYY" 
                    class="form-control"/>
            </div>
        </td>
    </tr>
    <tr>
        <td style="text-align: left;">
            <b>If Nominee is a Minor, give 
            GUARDIAN's Particulars</b>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_name" id="g_name"  size="30" maxlength="200" disabled
                placeholder='Guardian Name' class="form-control"/>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_relation" id="g_relation"  size="30" maxlength="200" disabled  
                placeholder='Guardian Relationship with you' class="form-control"/>
        </td>
    </tr>
    <tr>
        <td>
            <input style="width: 600px;" 
                type="text" name="g_address" id="g_address"  size="30" maxlength="200" disabled 
                placeholder='Guardian Address' class="form-control"/>
        </td>
    </tr>
</table>

【讨论】:

  • 非常感谢您提供宝贵的代码。没有日期选择器,您的代码就像一个魅力。当我通过日期选择器选择日期时,即使脚本中的更改也不会被调用。因此,无论选择的日期如何,表单字段都保持禁用状态。由于今天所有网站都使用日期选择器而不是手动输入日期,因此如果日期选择器可以触发更改事件并禁用/启用表单字段,那将非常有帮助
  • 这一切都取决于你使用什么样的 datepicket。有时,日期选择器会创建另一个隐藏元素来存储值,因此您需要在该元素上绑定更改事件。请使用启用日期选择器的代码更新您的问题,我将更新我的答案以适应解决方案
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 2019-05-22
  • 2019-05-29
  • 2019-08-14
  • 2020-12-05
  • 1970-01-01
  • 2011-06-23
  • 2021-03-03
相关资源
最近更新 更多