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

问题描述:

VS2013,MVC5,VB,在剃刀视图为什么我在javascript中看不到.value属性的字符串?

我想设置一个字符串的值将被发回到控制器。我敢新的JavaScript,但我发现这个(link)其中包括下面的代码:

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

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

当我尝试的那种类型,因为看到“ELEM”的“值”属性上面不可用。为什么会这样?

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

的看法是设置有:

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

我输入元素是:

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

外壳和脚本是:

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

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

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

我想将多个复选框字段的值合并到控制器期待的单个表单字段中,所以我想我可以使用JavaScript将所有选中字段连接到期望字段。但我似乎无法像上面链接到的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 /> 

预期的实际形式元素为“响应”,因此,如果我串联响应1和RESPONSE2响应将捕获无论多少复选框被创建和检查的数据。控制器期望看到“响应”,并且它是接收方法中的一个绑定字段。

这是我键入:

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

但“.value的”上面看到了智能感知不出来,当然不运行。

  • 新增原帖后:

    我也觉得这(link) SO张贴使用我会学习和尝试按照复选框帮手。但JavaScript问题仍然存在。

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

    @Html。复选框(“响应”,FALSE)

又将这条线产生:

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

在提交事件或提交按钮的点击NEVER提交表单。你的领域的id =“Response”在哪里? – mplungjan 2015-01-20 22:01:10

+0

我在帖子正文中添加了我认为您在上面要求的内容作为附加材料。我不确定我是否从未强调过。你说的是我用过的javascript submit,还是原来的 Alan 2015-01-20 22:21:29

+0

如果你想改变html,使用input.setAttribute(“value”,123)而不是input.value = 123; – dandavis 2015-01-20 23:24:40

你的JS代码是从的jsfiddle测试有效,所以这是有可能的智能感知错误或限制。尝试直接在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");