为什么我没有在javascript中看到我的字符串的.value属性?

时间:2015-01-20 21:58:46

标签: javascript asp.net-mvc razor

VSZ13,MVC5,VB,在Razor视图中

我想设置一个字符串的值,该字符串将被发布回控制器。我是javascript的新手,但我发现这个(link)包含以下代码:

<input type="text" id="mytext">

<script type="text/javascript">
  var elem = document.getElementById("mytext");
  elem.value = "My default value";
</script>

当我尝试输入时,上面'elem'上显示的'value'属性不可用。为什么会这样?

最终我正在尝试修改将返回到控制器的表单字段。虽然我上面的问题是我想知道的,但我认为包含完整的上下文会很有用。

视图设置为:

@Using (Html.BeginForm(Nothing, Nothing, FormMethod.Post, New With {.id = "thisForm"}))

我的输入元素是:

<input type="button" onclick="UserCommit()" value="Next" class="btn btn-default" tabindex="2" />

脚本shell是:

<script type="text/javascript">
  function UserCommit() {
    $("#thisForm").submit()
  }
</script>

上面的脚本工作并提交与原始输入元素相同的表单:

<input type="submit" value="Next" class="btn btn-default" tabindex="2" />

我想将多个复选框字段的值组合到控制器期待的单个表单字段中,因此我想我可以使用javascript将所有已检查的字段连接到expect字段中。但我似乎无法访问表单字段,因为我上面链接的SO帖子表明。

我当前的视图使用html帮助程序并生成以下html(这是查看生成的源代码):

<input id="Response1" name="Response1" type="checkbox" value="true" /><input name="Response1" type="hidden" value="false" /> one<br />
<input id="Response2" name="Response2" type="checkbox" value="true" /><input name="Response2" type="hidden" value="false" /> two<br />

期望的实际表单元素是“Response”,因此如果我连接Response1和Response2等,则响应将捕获创建和检查的复选框的数据。控制器期望看到“响应”,它是接收方法中的绑定字段。

这是我输入的内容:

<script type="text/javascript">
  function UserCommit() {
    var myElement = document.getElementById("Response");
    myElement.value = "A new response";
    $("#thisForm").submit()
  }
</script>

但是,上面看到的'.value'没有出现在Intellisense中,当然也没有出现。

  • 原帖后添加:

    我也找到了这个(link) SO帖子,用于使用我将研究并尝试遵循的复选框帮助。但javascript问题仍然存在。

  • 在评论中添加了mplungjan。这是你要问的,生成“响应”字段的行吗?

    @ Html.CheckBox(“Response”,False)

该行反过来产生:

<input id="Response" name="Response" type="checkbox" value="true" /><input name="Response" type="hidden" value="false" />

1 个答案:

答案 0 :(得分:0)

您的JS代码在JSFiddle上进行测试时有效,因此这可能是Intellisense的错误或限制。尝试直接在document.getElementById上设置值,而不是先设置变量。

所以改变

  var elem = document.getElementById("mytext");
  elem.value = "My default value";

要:

 var elem = document.getElementById("mytext").value = "My default value";

或者,使用jQuery:

$('#mytext').val("my default value");