清除表单并填充jquery
Clear a form and populate jquery
我正在尝试清除表单,然后用新数据重新填充它。我有一个页面,有一个搜索历史列表,以及一个"再次搜索"按钮,当点击时,它需要搜索历史字符串,拆分它,然后再匹配那些所有不同的形式项目;复选框、单选等。表单中基本上有各种表单元素所有元素都按照我的要求填充,除了复选框。我第一次点击填充表单按钮,它工作得很好,但在第一次点击所有的复选框开始混乱…有些道具以一种奇怪的随机模式填充,有些则没有。我没有包括html,因为我不认为这是必要的,但如果有人需要更多的信息,请告诉我。
这将重置表单。我已经独立测试过了,它可以工作。
function form_reset(){
$('#hosp_search_form')[0].reset();
$('#hosp_search_form').find("input[type=text], textarea").val("");
$('input[type=checkbox]').each(function(){
$('input[type=checkbox]').removeAttr('checked');
});
$('input[type=number]').val('');
$('input[type=radio]').each(function(){
$(this).removeAttr('checked');
});
单击,首先清除先前值的形式,然后抓住其他需要的值并格式化它们…这部分在章节中有点难看,但我已经解决了所有的值,一切都是应该的。
$('.search_again_btn').on('click', function(){
form_reset();
$('#hosp_search_form').find('input[type=checkbox]').removeAttr('checked');
var id = $(this).data('id');
var searchstring = $('#searchstring_' + id).text();
var patientcode = $('#patientcode_' + id).text();
var mrn = $('#mrn_' + id).text();
var first_name = patientcode.substr(0,2);
var last_name = patientcode.substr(2,2);
var age = patientcode.substr(4,3);
var gender = patientcode.substr(6,2);
var age = age.replace(/'D+/g, '');
gender = gender.replace(/[0-9]/g, '');
填充一些表单,工作良好
//populate fields in search form
$('input[name=fn]').val(first_name);
$('input[name=ln]').val(last_name);
$('input[name=patientage]').val(age);
$('input[name=mrn]').val(mrn);
填充表单的另一部分,也总是根据需要工作
//populate gender fields
if(gender == 'F'){
$('.female').attr('checked', 'checked');
}
if(gender == 'M'){
$('.male').attr('checked', 'checked');
}
这就是我怀疑的问题所在。Splitsearch是一个长字符串(以前的搜索历史记录),其中的项用a分隔。它们被分成不同的项目。我控制台记录了这一点,它正确地把它分解成我需要的较小的值,然后迭代这些,迭代所有的复选框,每个复选框都有一个数据属性,可以在splitsearch中保存值。如果一个值匹配,它应该检查它。每次第一次,对于任何splitsearch/search字符串值的组合,这都是有效的,但是第一次之后,我不知道它在做什么。我希望每次点击,表单被清除,它做的值匹配再次如我所描述的。
//populate checkboxes
var splitsearch = searchstring.split('. ');
$.each(splitsearch, function(key, value){
$('input[type=checkbox').each(function(keyb, checkbox){
item = $(checkbox).data('services');
if(item == value){
$(this).attr('checked', 'checked');
console.log($(this));
}
});
这与上面的操作相同,但每次都有效…可能是因为没有像复选框那样的多重组合。
$('input[name=payor]').each(function(k, radio){
if(value == $(radio).data('payors')){
$(this).attr('checked', 'checked');
//console.log($(this));
}
});
和上面的一样,也能工作。
$('input[name=bedtype]').each(function(keyc, radio){
bed = $(radio).data('bed');
if(bed == value){
$(this).attr('checked', 'checked');
}
});
下面这部分很难看,但每次都像我需要的那样填充表单。
//if searchstring contains Needs Transportation, returns true, else returns false
if(value.indexOf("Needs Transportation") > -1 === true){
$('.transyes').attr('checked', 'checked');
}
if(value.indexOf("Near hospital") > -1 != true){
$('input[name=desiredzip]').val(searchstring.substr(5,5));
}
if(value.indexOf("5 mile radius") > -1 === true){
$('.miles_5').attr('checked', 'checked');
}
if(value.indexOf("10 mile radius") > -1 === true){
$('.miles_10').attr('checked', 'checked');
}
if(value.indexOf("15 mile radius") > -1 === true){
$('.miles_15').attr('checked', 'checked');
}
if(value.indexOf("20 mile radius") > -1 === true){
$('.miles_20').attr('checked', 'checked');
}
});
将窗口向上滚动到已填充的搜索表单并显示它。
window.scrollTo(0,100);
$('#search_show').show();
});
这只是一个想法,但是,它可能会帮助您重新构建代码以保持DRY。
// used to Hold search data in local or global
var data;
function form_reset() {
// clear form
}
function get_search_data() {
// populate data with search results
}
function form_populate() {
// use data to populate form
}
$('.search_again_btn').on('click', function(){
get_search_data();
form_reset();
form_populate();
});
// Initial Load of form
get_search_data();
form_populate();
的方式,你使用相同的初始填充函数,当你刷新,它迫使你把你的数据放入一个变量,可以在clear和填充函数中看到,消除你对this和$(this)的依赖。
还需要记住,click函数内this的值将位于click事件本身的上下文中,而不是其他代码所属的JavaScript对象。
- 如何使用JSON字符串中的jQuery填充下拉框
- JSP AJAX jQuery填充表问题
- 使用 jQuery 填充子属性
- 我如何从<选择>使用jQuery填充title标记
- 使用 jquery 填充选择选项失败
- 使用 jQuery 填充“从集合中选择框”
- 无法用数据实时搜索填充引导程序选择+使用jquery填充多个
- 给两个文本框一个使用 Javascript 或 jQuery 填充的相同值
- 使用 jquery 填充特定字符数的文本字段时的操作
- PHP 用 jquery 填充下拉框
- 使用1个HTML表单:要求用户提供唯一标识符,从数据库中获取记录,解析为JSON,使用jquery填充插件填充HTML页
- 使用 jQuery 填充输入字段
- jQuery - 填充下拉表单选项值
- Javascript/JQuery 填充数组许多元素
- jQuery填充的日期选择器有一个月不同步
- 如果ID丢失,请使用jquery填充另一个隐藏字段中的行
- 使用OptGroup从两个分离的JSon对象JQuery填充Select
- 如何使用JQuery填充级联下拉列表
- RequireJS JQuery填充程序不适用于VS2013
- 如何在QuickBase中使用jQuery填充多维数组