【问题标题】:Get Value From Dynamic textarea从动态文本区域获取价值
【发布时间】:2017-01-17 11:13:49
【问题描述】:

在给定的代码中,我创建了一个动态文本区域,现在当我尝试从该文本区域获取插入值时。它给了我空值。

 <form name="myForm">
 <textarea name="fname" <%#!((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).Code.Equals("OTH", StringComparison.InvariantCultureIgnoreCase) ? "style='display: none;'" : string.Empty%> id="text<%#((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).ID%>" maxlength="50" placeholder="Enter other item details"></textarea>
 </form>

Given 是我从 textarea 框中获取价值的函数:

 function ValidateData() {
            if ($("textarea").is(":visible")) {
                //var x = document.forms["myForm"]["fname"].value;
                var x = document.getElementsByName("fname").value;
                if (x == null || x == "") {
                    alert("Please Enter Other Item Details");
                    return false;
                }
            }
            else return true
        }

【问题讨论】:

  • getElementsByName 会得到一个没有 value 属性的元素列表。

标签: javascript jquery html asp.net


【解决方案1】:

您的 textarea 是动态的,因此您可以使用 textarea 更改事件。您可以在加载时使用给定的代码,因此每当您输入文本时,它都会在 OtherItemValue 上设置:

var OtherItemValue;
 $("textarea").on('input change keyup', function () {
                if (this.value.length) {
                    OtherItemValue = this.value;
                } else {
                    OtherItemValue = "";
                }
            });

然后你可以使用下面的代码:

function ValidateData() {
    if ($("textarea").is(":visible")) {
 if (OtherItemValue == null || OtherItemValue == "") {
            alert("Please Enter Other Item Details");
            return false;
        }
    }
    else return true
}

【讨论】:

    【解决方案2】:

    既然你已经在使用jQuery了,为什么不使用它来达到你想要的效果呢?

    您的代码如下所示:

    function ValidateData() {
        if ($("textarea").is(":visible")) {
            var x = $("textarea").val();
            if (x == null || x == "") {
                alert("Please Enter Other Item Details");
                return false;
            }
        }
    
        return true
    }
    

    如果你真的需要使用标准库,@Rachit Gupta 的answer 应该可以解决问题。

    【讨论】:

    • 它不工作
    • 如果问题是“没有得到 true 作为结果”,只需删除 else 关键字 - 这不是必需的,并且在某些情况下会强制您的代码返回 undefined
    • 问题是无论我在 textarea 中插入什么,它都会给我空值@mdziekon
    • 我已经复制了您的 HTML 代码,将其粘贴到 JSFiddle 中并修复了脚本。 它有效,您可以自己在 JSFiddle 上查看),因此问题必须在您的代码中的其他地方(您没有向我们展示)。
    【解决方案3】:
    <form name="myForm">
     <textarea name="fname" <%#!((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).Code.Equals("OTH", StringComparison.InvariantCultureIgnoreCase) ? "style='display: none;'" : string.Empty%> id="text<%#((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).ID%>" maxlength="50" placeholder="Enter other item details"></textarea>
    </form>
    

    您的函数现在应该如下所示

    function ValidateData() {
            if ($("textarea").is(":visible")) {
                //var x = document.forms["myForm"]["fname"].value;
                var x = document.getElementsByName("fname")[0].value;
                if (x == null || x == "") {
                    alert("Please Enter Other Item Details");
                    return false;
                }
            }
            else return true
        }
    

    您的代码的问题是 getElementsByName 将获得一个没有 value 属性的元素列表。您只需要获取特定元素并获取其值。此解决方案可能会解决您的问题,但如果您在 textarea 上方没有名称为 fname 的任何其他元素,则该解决方案将有效。

    【讨论】:

    • textarea已有动态id,不能定义两次。
    • @Developer 立即查看。
    【解决方案4】:

    使用 jquery .val() 方法检索文本区域的值。 您需要在文档就绪功能处初始化 textarea 以清空。

    $(document).ready(function(){
       $("textarea[name='fname']").val("");    
    });
    
        function ValidateData() {
    
        if ($("textarea").is(":visible")) {
            var x = $("textarea[name='fname']").val();
            if (x == null || x == "") {
                alert("In if " + x);
                return false;
            }
            else {
                  alert("In else" + x);
            }
        }
        else {
                return true
        }
    }
    

    【讨论】:

    • 它不工作@DPT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2011-09-26
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多