从动态textarea获取价值

时间:2016-09-09 10:18:00

标签: javascript jquery html asp.net

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

 <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>

鉴于我的功能是从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
        }

4 个答案:

答案 0 :(得分:2)

您的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
}

答案 1 :(得分:0)

<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的任何其他元素,则可以解决此问题。

答案 2 :(得分:0)

由于您已经使用了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应该可以解决问题。

答案 3 :(得分:0)

使用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
    }
}