Javascript Html.textbox用于由库添加时不呈现
我目前正在一个网站上工作。到目前为止,一切都正常工作,除了我将一个函数移到了一个库中,以便它可以重用 该功能是一组两个单选按钮的单击事件。单击“是”按钮时,需要显示一个文本框及其标签。单击“否”按钮时,它们需要消失 标签在“是”按钮上显示良好。整个功能在页面上运行得非常完美。但是,当我将脚本移动到库中以便在项目中重用时,文本框不再出现。我尝试过用输入标签替换,结果类似 相关html:Javascript Html.textbox用于由库添加时不呈现,javascript,html,html-helper,Javascript,Html,Html Helper,我目前正在一个网站上工作。到目前为止,一切都正常工作,除了我将一个函数移到了一个库中,以便它可以重用 该功能是一组两个单选按钮的单击事件。单击“是”按钮时,需要显示一个文本框及其标签。单击“否”按钮时,它们需要消失 标签在“是”按钮上显示良好。整个功能在页面上运行得非常完美。但是,当我将脚本移动到库中以便在项目中重用时,文本框不再出现。我尝试过用输入标签替换,结果类似 相关html: @ModelType PROJECT.Form @Code ViewData("Title") = "
@ModelType PROJECT.Form
@Code
ViewData("Title") = "PageTitle"
Layout = "~/Views/Shared/_LayoutPage.Desktop.vbhtml"
End Code
<script>
$(function () { initFunction() })
</script>
@Using Html.BeginForm("Process", "Home")
@Html.AntiForgeryToken()
@Html.Hidden("page", 4)
@<div id="formColumn" class="grid_19 alpha">
<h3>Process Title</h3>
<fieldset>
<legend>Page Title</legend>
<ol class="grid_18 push_1">
//a couple yes/no questions here, works fine
<li><label>Question 3</label></li>
<li>
<ol id="appendHere"class="horizontalList clearfix">
<li><label>Yes</label></li>
<li>@Html.RadioButtonFor(Function(a) a.Q3Radio, True)</li>
<li><label>No</label></li>
<li>@Html.RadioButtonFor(Function(a) a.Q3Radio, False)</li>
</ol>
</li>
//more working stuff
</ol>
<div class="clear"></div>
<button name="submit" id="submit" value="submit" class="push_1">Submit</button>
<button name="cancel" id="cancel" value="cancel" class="push_1">Cancel</button>
<button name="back" id="back" value="back" class="push_1">Back</button>
</fieldset>
</div>
End Using
@ModelType项目.表单
@代码
ViewData(“标题”)=“页面标题”
Layout=“~/Views/Shared/\u LayoutPage.Desktop.vbhtml”
结束代码
$(函数(){initFunction()})
@使用Html.BeginForm(“进程”、“主页”)
@Html.AntiForgeryToken()
@隐藏(“第页”,第4页)
@
过程标题
页面标题
//这里有几个是/否的问题,效果很好
问题3
对
@Html.radioButton(函数(a)a.Q3Radio,True)
没有
@Html.radioButton(函数(a)a.Q3Radio,False)
//更多的工作内容
提交
取消
返回
终端使用
javascript:
function initFunction() {
$(function () { $("input[name=Q3Radio]").click(function () { handleQ3Check(this) }) })
var check = true
function handleQ3Check(elem) {
if (elem.value == "True") {
if (check) {
$('#appendHere').append('<li class="appended"><label>Amount: $</label></li><li class="appended">@Html.TextBoxFor(Function(a) a.appendAmount)</li>')
$(function () { $("input[name=appendAmount]").blur(function () { handleFees(this, 'stuff') }) })
check = false
}
} else {
var appendedInput = $('.appended')
if (appendedInput != null) {
handleFees(appendedInput, 'stuff')
$(appendedInput).remove()
check = true
}
}
}
}
function initFunction(){
$(函数(){$(“输入[name=Q3Radio]”)。单击(函数(){handleQ3Check(this)})
var检查=真
功能手柄Q3检查(elem){
如果(元素值=“真”){
如果(检查){
$(“#appendHere”).append(“金额:$ @Html.TextBoxFor(函数(a)a.appendAmount) )
$(函数(){$(“输入[name=appendAmount]”).blur(函数(){handleFees(this,'stuff')})
检查=错误
}
}否则{
var appendedInput=$('.appended')
if(appendedInput!=null){
handleFees(附加输入“stuff”)
$(appendedInput).remove()
检查=正确
}
}
}
}
如上所述,我曾尝试用输入标记制作文本框,但没有出现。这种情况下出现的是Amount:$@Html.TextboxFor(函数(a)a.appendAmount)
与此完全相同
在我进一步尝试调试该问题时,如能提供任何帮助或向正确方向推进,我将不胜感激。当您将Javascript包含在同一个vbhtml文件中时,它起作用的原因是vbhtml文件在被发送到客户端浏览器之前已被编译。查看通过查看源代码或使用开发人员工具/或您喜爱的浏览器中的类似工具呈现的javascript 当你要求javascript写出
$('#appendHere').append('<li class="appended"><label>Amount: $</label></li>
<li class="appended">@Html.TextBoxFor(Function(a) a.appendAmount)</li>')
$('#appendHere')。追加('金额:$
@Html.TextBoxFor(函数(a)a.appendAmount) )
就这样
从您的评论来看,您似乎已经意识到这一点:-)并且正在取得进展。我认为您将Razor和Javascript混为一谈。Razor@Html.TextBoxFor将在服务器上被“翻译”,而不是在Javascript插入它的客户端上。等等,没关系,我明白你说的了。但是问题是,
标记也不起作用。它只是简单的不显示,这只是显示文本。你知道有什么方法可以让文本框显示出来,或者可能是什么错误吗?标签出现了,所以标签应该显示出来。如果使用Chrome,请按F12并打开开发工具,查看控制台中的内容。这可能会显示javascript的错误。也可以试着移除一些东西,然后慢慢添加。如果它在页面上起作用,那么查看源代码并查看实际呈现的HTML是什么。那么您是说这个$('#appendHere')。append('数量:$ )
不起作用?@roryok不,它不起作用。我正在再试一次,看看能得到什么。我使用的是IE11和他们的开发工具,没有任何javascript错误。使用
标记,它实际上甚至没有在html中显示标记。只是一个空的标签集。你每天都能学到新东西。虽然公平地说。。。启动这个项目的同事似乎也不知道,因为当我问他时,他不知道为什么它不起作用。谢谢你在这件事上的迅速帮助。没问题,一个措辞恰当的问题总是能很快得到回答。幸运的是,上周我路过,犯了类似的错误!