Jquery 将值存储在隐藏字段中,然后通过查询字符串将其传递给电子邮件提交
我有一些jQuery代码,用于从表单中获取用户输入,并将其放在电子邮件的正文中。此表单中的一个字段是一个可选复选框,其id和名称为member。我有一个名为memberChk的隐藏字段,用于根据复选框是否选中来存储值。如果选中该复选框,则隐藏字段应存储一个字符串值Yes。如果未选中该复选框,则隐藏字段应存储No 好的,我更新了jQuery代码,现在无论复选框是否选中,该值始终为No。选中该复选框时,应在电子邮件中显示“是”。我错过了什么 这是复选框和隐藏字段的代码:Jquery 将值存储在隐藏字段中,然后通过查询字符串将其传递给电子邮件提交,jquery,asp.net,forms,checkbox,hidden-field,Jquery,Asp.net,Forms,Checkbox,Hidden Field,我有一些jQuery代码,用于从表单中获取用户输入,并将其放在电子邮件的正文中。此表单中的一个字段是一个可选复选框,其id和名称为member。我有一个名为memberChk的隐藏字段,用于根据复选框是否选中来存储值。如果选中该复选框,则隐藏字段应存储一个字符串值Yes。如果未选中该复选框,则隐藏字段应存储No 好的,我更新了jQuery代码,现在无论复选框是否选中,该值始终为No。选中该复选框时,应在电子邮件中显示“是”。我错过了什么 这是复选框和隐藏字段的代码: <tr><
<tr><td colspan="3" valign="top"><input type="checkbox" id="member" name="member" value="Member of the NDGAA, PCSA, or Pet Professional Guild" /> Check if a you are a member of the NDGAA, PCSA, or Pet Professional Guild</td><asp:HiddenField ID="memberChk" runat="server" /></tr>
var member = $('#memberChk').val();
member = $('input[name="member"]:checked').size() == 0 ? "No" : "Yes";
这是构建查询字符串的代码部分,用于将表单条目传递到电子邮件提交:
$.ajax({
type: "GET",
url: "/Usercontrols/forms/getaquote_processor.aspx",
data: "FirstName=" + FirstName + "&LastName=" + LastName + "&Email=" + Email + "&Telephone=" + Telephone + "&BusinessName=" + BusinessName +
"&Address1=" + Address1 + "&Address2=" + Address2 + "&City=" + City + "&State=" + State + "&ZipCode=" + ZipCode + "&BusinessType=" + BusinessType +
"&OwnershipType=" + OwnershipType + "&PartnershipName=" + PartnershipName + "&MemberOf=" + MemberOf + "&CurrentInsurance=" + CurrentInsurance +
"&PolicyExpiration=" + PolicyExpiration + "&AnnualReceipts=" + AnnualReceipts + "&AnnualPayroll=" + AnnualPayroll + "&OwnOrRent=" + OwnOrRent +
"&ConstructionType=" + ConstructionType + "&YearBuilt=" + YearBuilt + "&BuildingUpdates=" + BuildingUpdates + "&Heating=" + Heating + "&HeatingYear=" + HeatingYear +
"&Cooling=" + Cooling + "&CoolingYear=" + CoolingYear + "&Plumbing=" + Plumbing + "&PlumbingYear=" + PlumbingYear + "&Electrical=" + Electrical + "&ElectricalYear=" + ElectricalYear +
"&Roofing=" + Roofing + "&RoofingYear=" + RoofingYear + "&Sprinklers=" + Sprinklers + "&PlateGlass=" + PlateGlass +
"&PlateGlassWidth=" + PlateGlassWidth + "&HomeBusiness=" + HomeBusiness + "&SeperateBuilding=" + SeperateBuilding + "&CostToReplaceBuilding=" + CostToReplaceBuilding +
"&CostToReplaceContents=" + CostToReplaceContents + "&OwnersCostToReplaceBuilding=" + OwnersCostToReplaceBuilding + "&OwnersSquareFootage=" + OwnersSquareFootage +
"&NumberOfEmployees=" + NumberOfEmployees + "&NumberOfContractors=" + NumberOfContractors + "&MAddress1=" + MAddress1 + "&MAddress2=" + MAddress2 + "&MCity=" + MCity +
"&MState=" + MState + "&MZipCode=" + MZipCode + "&VehicleMake=" + VehicleMake + "&VehicleModel=" + Model + "&VIN=" + VIN + "&Cab=" + Cab + "&Customization=" + Customization +
"&LeaseCompany=" + LeaseCompany + "&DriversName=" + DriversName + "&DriversLicense=" + DriversLicense + "&Birthday=" + BirthDay + "&CageFree=" + CageFree +
"&ConstuctionOfRuns=" + ConstructionOfRuns + "&Floors=" + Floors + "&Walls=" + Walls + "&MaxDogs=" + MaxDogs + "&AvgDogs=" + AvgDogs + "&KennelsEnclosed=" + KennelsEnclosed +
"&KennelsHeated=" + KennelsHeated + "&FenceNeeded=" + FenceNeeded + "&IsFenceAttached=" + IsFenceAttached + "&FenceReplacementCost=" + FenceReplacementCost +
"&FenceSquareFeet=" + FenceSquareFeet + "&RequireVaccinations=" + RequireVaccinations + "&CustomersUnsupervised=" + CustomersUnsupervised + "&Member=" + member + "&Comments=" + comments,
最后但并非最不重要的是,电子邮件正文中用于在电子邮件中显示复选框值的部分:
#region MEMBERSHIP
//MEMBERSHIP
String Member = string.Empty;
Member = Request.QueryString["Member"];
#endregion MEMBERSHIP
#region MEMBERSHIP
sb.Append("<tr><td colspan=\"2\"><strong>Check if a you are a member of the NDGAA, PCSA, or Pet Professional Guild</strong></td></tr>");
sb.Append(string.Format("<tr><td colspan=\"2\">{0}</td></tr>", Member));
#endregion
请尝试下面的代码
// work out the value
var checkVal = $('input[name="member"]:checked').length === 0 ? "No" : "Yes";
// get the checkbox
var member = $('#memberChk');
// set the checkbox value
member.val(checkVal);
但现在的问题是,您不允许ASP.NET将表单发回,因此隐藏字段的使用方式与预期不同,因此我们需要获取其值
var memberVal = member.val();
// obviously this step is not required you could just use the raw value we calculate above,
// this is added as I don't know the execution flow of your code
另一种方法是在下面的注释中使用类似于JSBINI设置的onChange处理程序
$('input[name="member"]').on('change', function(e)
{
var isChecked = $(this).is(':checked');
$('#memberChk').val(isChecked ? "Yes" : "No");
});
// then just get the value when you need it like
var member = $('#memberChk').val();
您还知道可以使用$'form'.serialize[]来获取ajax调用的所有表单值,这要求它们都有一个name属性吗?我将尝试此方法……至于$'form'.serialize方法,我不知道,但这也不是我的代码。我不知道为什么以前的开发人员没有这样做…好吧,我确实尝试了你的代码,它可以工作,但是当复选框被选中时,电子邮件提交仍然显示no作为响应。我在这里创建了一个JSBin来演示复选框的选中。我发现你的方法是有效的。我有个打字错误,我没听懂。