Javascript 没有选定项目时的“下一步”按钮行为
我有一个带有动态部分的html页面,根据所选选项的不同而变化。以下是选项部分:Javascript 没有选定项目时的“下一步”按钮行为,javascript,c#,jquery,html,asp.net-mvc,Javascript,C#,Jquery,Html,Asp.net Mvc,我有一个带有动态部分的html页面,根据所选选项的不同而变化。以下是选项部分: <div class="form-group-lg"> @foreach (var respuesta in Model.ListRespuestas) { <div class="col-md-8"> <label cl
<div class="form-group-lg">
@foreach (var respuesta in Model.ListRespuestas) {
<div class="col-md-8">
<label class="control-label" for="@respuesta.Id">
@respuesta.Nombre
</label>
<input type="radio" name="SelectedItem" id="@respuesta.Id" value="@respuesta.Id" style="margin-right: 10px;" />
</div>
}
</div>
@foreach(Model.ListRespuestas中的var respuesta){
@列名
}
当按下“下一步”(“非西班牙语国家的siguiente”)按钮时,情况会发生变化。这是按钮的代码:
<div class="col-md-6 text-right">
<span data-placement="top" data-toggle="tooltip" title="" data-original-title="Confirmación de acción">
<input type="submit" id="siguiente" class="btn btn-primary" value="Siguiente" />
</span>
</div>
此按钮的脚本如下所示:
<script>
$('#siguiente').click(function (e) {
e.preventDefault();
SendAjaxForm();
});
$('input:radio[name="SelectedItem"]').change(
function () {
if (this.checked) {
$.post('@Url.Content("~/Home/Opciones/?idrespuesta=")' + this.id, function (data) {
$("#content-options").html(data);
});
}
});
</script>
$('siguiente')。单击(函数(e){
e、 预防默认值();
SendAjaxForm();
});
$('input:radio[name=“SelectedItem”]')。更改(
函数(){
如果(选中此项){
$.post('@Url.Content(“~/Home/Opciones/?idrespuesta=“)”)+this.id,函数(数据){
$(“#内容选项”).html(数据);
});
}
});
所有这些都很好。页面显示第一个问题,然后用户选择一个并单击下一步,然后框架更改并显示相应的下一个问题,该过程继续进行,直到完成问题分支
但是,我不知道如何对按钮进行编码,以便在单击且未选择任何选项时抛出警告消息(棘手的部分是未选择的行为,我知道如何抛出异常)。欢迎提供任何帮助(包括文档或wiki)。提前谢谢大家
编辑-更新
所以我更新了按钮脚本
<script>
$('#siguiente').click(function (e) {
if ($('input:radio[name="SelectedItem"]').is(':checked')){
e.preventDefault();
SendAjaxForm();
$('input:radio[name="SelectedItem"]').change(function () {
if (this.checked) {
$.post('@Url.Content("~/Home/Opciones/?idrespuesta=")' + this.id, function (data) {
$("#content-options").html(data);
});
}
});
} else {
alert("No se ha seleccionado nada");
}
});
</script>
$('siguiente')。单击(函数(e){
如果($('input:radio[name=“SelectedItem”]')。是(':checked')){
e、 预防默认值();
SendAjaxForm();
$('input:radio[name=“SelectedItem”]')。更改(函数(){
如果(选中此项){
$.post('@Url.Content(“~/Home/Opciones/?idrespuesta=“)”)+this.id,函数(数据){
$(“#内容选项”).html(数据);
});
}
});
}否则{
警报(“无se ha seleccionado nada”);
}
});
现在,当未选择任何选项时,我会显示一条警告消息,但“SendAjaxForm”函数仍会执行-生成一个异常(由于字段“idrespuesta”为null,未选择任何选项,所以在需要int时引用null参数)。不知道为什么。无论如何,谢谢大家。我终于拿到了。建议的更改仅影响脚本:
<script>
$('#siguiente').click(function (e) {
$('input:radio[name="SelectedItem"]').change(function () {
if (this.checked) {
$.post('@Url.Content("~/Home/Opciones/?idrespuesta=")' + this.id, function (data) {
$("#content-options").html(data);
});
}
});
if ($('input:radio[name="SelectedItem"]').is(':checked')){
e.preventDefault();
SendAjaxForm();
} else {
e.preventDefault();
alert("No se ha seleccionado nada");
}
});</script>
注意下面几行e.preventDefault()如果。。。其他
备选方案。这是为了防止按钮仍然工作,即使没有选中任何选项
现在,如果我们在未选中任何选项的情况下按下“下一步”按钮,则会显示一条警报,并保持在页面上,直到之前选择了任何选项。谢谢大家的支持,希望对大家有所帮助
愉快的编码。如果您通过使用强类型的
HtmlHelper
方法绑定到模型,生成了正确的视图,那么这一切都是现成的,但是您可以随时检查resp
是否未定义@StephenMuecke我实际上收到了这个未完成的项目,这是我学习的一部分,你能提供一个参考/链接,让我可以详细阅读那些HtmlHelper方法吗?谢谢你,谢谢你的回答。你在循环中生成单选按钮的代码应该是@respuesta。Nombre@Html.RadioButtonFor(m=>m.SelectedItem,respuesta.Id,new{Id=”“})
并在循环后添加@Html.ValidationMessageFor(m=>m.SelectedItem)
,其中属性是[Required]public int?选择editem{get;set;}
添加内容时,您将重新解析$.validator
,请参阅。然后处理表单.submit()
事件并检查.valid()
,如果没有,则取消ajax(并显示错误消息)@StephenMuecke感谢您的回答。您提出的更改超出了我目前的C#知识(不是因为我不理解它,似乎是一个适当的结构/设计问题),但我会仔细研究一下。如果你能告诉我如何搜索,那就太好了。再次感谢。
if ($('input:radio[name="SelectedItem"]').is(':checked')){
e.preventDefault();
SendAjaxForm();
} else {
e.preventDefault();
alert("No se ha seleccionado nada");
}