【问题标题】:HTML/PHP form data validation?HTML/PHP 表单数据验证?
【发布时间】:2015-10-09 08:44:57
【问题描述】:

我是编码新手

只是在这件事上寻求一些帮助, 我的代码是我正在设计的表中的一个 sn-p

我想要做的是禁用日期输入框,除非第一个下拉列表 = 'NO',下拉数据是从 SQL 查询中提取的

        <td><select name="DATEACC">
            <?php 
              $options = array(' ','YES','NO');
              $output = '';
              for( $i=0; $i<count($options); $i++ ) {
                  $output .= '<option ' 
                   . ( $Row['custdateaccepted'] == $options[$i] ? 'selected="selected"' : '' ) . '>' 
                   . $options[$i] 
                   . '</option>';
              }
              echo $output;?>
            </select></td>

        <td><input type="date" name="ADVDATE" value="<?php echo $Row['dateadvised'];?>"></td>

有人可以帮忙吗?

【问题讨论】:

  • 使用 jquery...
  • 您需要使用 JavaScript 或 jQuery。
  • 您可以在页面首次加载时根据 $Row['custdateaccepted'] 的值将日期输入设置为只读 - 但要在页面上更改下拉列表时更改它,您需要 Javascript (jQuery)

标签: php html validation


【解决方案1】:

只需在开始时禁用您的日期输入

<input type="date" id="ADVDATE" name="ADVDATE" value="<?php echo $Row['dateadvised'];?>" disabled> 

当您在下拉列表中有所需的值时,使用 js/jquery 启用它

$('[name=DATEACC]').change(function(){
    if($(this).val() == 'DESIRED_VALUE')
        $('[name=ADVDATE]').enable();
});

【讨论】:

  • 这听起来像是一个简单的解决方案,但是我不确定如何实现它,我已禁用日期建议输入,我该如何实现脚本?
【解决方案2】:

您需要为此使用 javascript。如果您有一个唯一的行 ID $rowid 为 1,2,3 等

<td><select name="DATEACC" onChange="dateEnable(this)" id="DATEACC_$Row['id']">
        <?php 
          $options = array(' ','YES','NO');
          $output = '';
          for( $i=0; $i<count($options); $i++ ) {
              $output .= '<option value="'.$options[$i].'"' 
               . ( $Row['custdateaccepted'] == $options[$i] ? 'selected="selected"' : '' ) . '>' 
               . $options[$i] 
               . '</option>';
          }
          echo $output;?>
        </select></td>

    <td><input id="ADVDATE_$Row['id']" type="date" name="ADVDATE" value="<?php echo $Row['dateadvised'];?>"></td>

在javascript中

function dateEnable(dropdown){
  var id = dropdown.id;
  var rowid = id.split('_');
  var myselect_value = dropdown.value;
  if(myselect_value == 'NO') {
    document.getElementById('ADVDATE'+'_'+rowid[1]).disabled = true;
  } else {
    document.getElementById('ADVDATE'+'_'+rowid[1]).disabled = false;
  }
}

【讨论】:

  • 此方法有效,但仅适用于表格的第一行。每行都有一个 DATEACC 是/否下拉菜单,但只有顶行被禁用
  • 那么你需要在每一行中为SELECT和ADVDATE指定不同的id。你有那个表的行 ID 吗?
  • 该表完全由 SQL 查询构建,其中每一行的值都被引用为 $Row。我不确定这是否是你的意思——我是这个领域的初学者
  • 有没有id。像 $Row['id']?
【解决方案3】:

不使用 jQuery 你可以试试:

javascript

function enabletextfield(e){
    var el=typeof( e.target )!=='undefined' ? e.target : e.srcElement;
    var value=el.options[ el.options.selectedIndex ].value;
    var txtfield=document.querySelectorAll('input[type="date"][name="ADVDATE"]')[0];
    txtfield.disabled = value=='NO' ? false : true;
}

html

        <select name='DATEACC' id='DATEACC' onchange='enabletextfield(event)'>
            <option value='MAYBE'>MAYBE
            <option value='NO'>No
            <option value='Yes'>Yes
        </select>
        <input type="date" name="ADVDATE" value="Some value or other" disabled=true />

显然更改选择菜单的名称以适应并将数据库中的正确值添加到日期输入框

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多