如果输入一个输入字段,则更改所有输入字段的类别

发布于 2024-11-07 17:10:45 字数 1370 浏览 1 评论 0原文

我有一个包含 3 个表的页面:

<table id="t1">
  <tr>
    <td></td><td><input type="text" name="name" /></td>
    <td></td><td><input type="text" name="id" /></td>
    <td></td><td><input type="text" name="perDate" /></td>
    <td></td><td><input type="text" name="email" /></td>
  </tr>
</table>

<table id="t2">
  <tr>
    <td></td><td><input type="text" name="lostFound"  /></td>
    <td></td><td><input type="text" name="lostDate" /></td>
    <td></td><td><input type="text" name="item" /></td>
  </tr>
</table>

<table id="t3">
  <tr>
    <td></td><td><input type="text" name="check" /></td>
    <td></td><td><input type="text" name="reason" /></td>
    <td></td><td><input type="text" name="chkDate" /></td>
  </tr>
</table>

所以,我有一个验证脚本,如果我只是将类更改为“必需”,那么它将使该输入字段成为必需。我遇到的问题是......我只想在填写该表中的另一个字段时需要一个字段,否则不需要该字段。例如:如果填写了 t1 - 名称,那么我想将 t1 - id、t1 - perDate 和 t1 - email 的类更改为“必需”,并保留 t2 和 t3 的所有其他类不变。我想知道是否有人可以用某种 javascript 代码为我指明正确的方向,使这成为可能。感谢您的所有帮助,如果需要更多信息,请询问。

I have a page with 3 tables:

<table id="t1">
  <tr>
    <td></td><td><input type="text" name="name" /></td>
    <td></td><td><input type="text" name="id" /></td>
    <td></td><td><input type="text" name="perDate" /></td>
    <td></td><td><input type="text" name="email" /></td>
  </tr>
</table>

<table id="t2">
  <tr>
    <td></td><td><input type="text" name="lostFound"  /></td>
    <td></td><td><input type="text" name="lostDate" /></td>
    <td></td><td><input type="text" name="item" /></td>
  </tr>
</table>

<table id="t3">
  <tr>
    <td></td><td><input type="text" name="check" /></td>
    <td></td><td><input type="text" name="reason" /></td>
    <td></td><td><input type="text" name="chkDate" /></td>
  </tr>
</table>

So, I have a validation script where if I just change the class to 'required' then it will make that input field required. The problem I am having is....I only want to require a field if another field in that table is filled out, otherwise the field is not required. Ex: If t1 - name is filled in then I want to change the class of t1 - id, t1 - perDate, and t1 - email to 'required', and leave all of the other classes for t2 and t3 untouched. I was wondering if someone could point me in the right direction with some sort of javascript code that would make this possible. thanks for all the help, and if more info is needed, please ask.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦醒灬来后我 2024-11-14 17:10:45

因此,当您模糊“名称”输入时,如果相邻输入提供了名称,则需要要求它们。但也不要忘记,如果它们返回并决定清除该名称字段,则不再需要它们,如下所示:

$('.t1 input[name=name]').blur(function(){
    var $depends = $('.t1 input[name=id], .t1 input[name=perDate], .t1 input[name=email]');
    if($(this).val() != "")
        $depends.addClass('required');
    else
        $depends.removeClass('required');
});

此外,如果您尝试更改必需的属性,如果任何控件具有数据,你会做这样的事情:

//blur even on each input in t1
$('.t1 input').blur(function(){
    //store as variable
    var $t1in = $('.t1 input');
    var hasData = false;
    //check all inputs and if one has data, set variable and exit
    $t1in.each(function(){
        if($(this).val().length > 0){
            hasData = true;

            //exit loop
            return false;
        }
    });
    //if any of the controls has data
    if(hasData)
        $t1in.addClass('required');
    else
        $t1in.removeClass('required');
});

So when you blur out of the "Name" input, you require the adjacent inputs to be required if they provided a name. But also don't forget to make them not required if they go back and decide to clear that name field like so:

$('.t1 input[name=name]').blur(function(){
    var $depends = $('.t1 input[name=id], .t1 input[name=perDate], .t1 input[name=email]');
    if($(this).val() != "")
        $depends.addClass('required');
    else
        $depends.removeClass('required');
});

Also, if you're trying to change the required attribute if any of the controls have data, you would do something like this:

//blur even on each input in t1
$('.t1 input').blur(function(){
    //store as variable
    var $t1in = $('.t1 input');
    var hasData = false;
    //check all inputs and if one has data, set variable and exit
    $t1in.each(function(){
        if($(this).val().length > 0){
            hasData = true;

            //exit loop
            return false;
        }
    });
    //if any of the controls has data
    if(hasData)
        $t1in.addClass('required');
    else
        $t1in.removeClass('required');
});
╭⌒浅淡时光〆 2024-11-14 17:10:45

如果您要使用 jQuery 或任何其他 JS 库,您可以非常轻松地执行以下操作:

$('#t1 input[name=name]').change(function()
{
    var dependents = $('#t1 input[name=id],
                        #t1 input[name=perDate],
                        #t1 input[name=email]');

    if (this.value.length > 0)
    {
        dependents.addClass('required');
    }
    else
    {
        dependents.removeClass('required');
    }
});

If you were to use jQuery, or any other JS library, you could very easily do something like this:

$('#t1 input[name=name]').change(function()
{
    var dependents = $('#t1 input[name=id],
                        #t1 input[name=perDate],
                        #t1 input[name=email]');

    if (this.value.length > 0)
    {
        dependents.addClass('required');
    }
    else
    {
        dependents.removeClass('required');
    }
});
抱着落日 2024-11-14 17:10:45
<style>
.required { border:2px solid red }
</style>

<script>
function checkFilled(field) {
    var fields = field.parentNode.parentNode.getElementsByTagName('input');
    for (i = 0; i < fields.length; i++) {
        fields[i].className = field.value != '' ? 'required' : '';
    }
}
</script>

<table id="t1">
  <tr>
    <td></td><td><input type="text" name="name" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="id" /></td>
    <td></td><td><input type="text" name="perDate" /></td>
    <td></td><td><input type="text" name="email" /></td>
  </tr>
</table>

<table id="t2">
  <tr>
    <td></td><td><input type="text" name="lostFound" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="lostDate" /></td>
    <td></td><td><input type="text" name="item" /></td>
  </tr>
</table>

<table id="t3">
  <tr>
    <td></td><td><input type="text" name="check" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="reason" /></td>
    <td></td><td><input type="text" name="chkDate" /></td>
  </tr>
</table>

添加所有 onkeydownonkeyuponchange 非常有用。 onchange 对于在字段中粘贴非常有用。

<style>
.required { border:2px solid red }
</style>

<script>
function checkFilled(field) {
    var fields = field.parentNode.parentNode.getElementsByTagName('input');
    for (i = 0; i < fields.length; i++) {
        fields[i].className = field.value != '' ? 'required' : '';
    }
}
</script>

<table id="t1">
  <tr>
    <td></td><td><input type="text" name="name" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="id" /></td>
    <td></td><td><input type="text" name="perDate" /></td>
    <td></td><td><input type="text" name="email" /></td>
  </tr>
</table>

<table id="t2">
  <tr>
    <td></td><td><input type="text" name="lostFound" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="lostDate" /></td>
    <td></td><td><input type="text" name="item" /></td>
  </tr>
</table>

<table id="t3">
  <tr>
    <td></td><td><input type="text" name="check" onkeydown="checkFilled(this)" onkeyup="checkFilled(this)" onchange="checkFilled(this)" /></td>
    <td></td><td><input type="text" name="reason" /></td>
    <td></td><td><input type="text" name="chkDate" /></td>
  </tr>
</table>

It's useful to add all onkeydown, onkeyup and onchange. onchange is useful for pasting in the field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文