GVKun编程网logo

js表单处理中单选、多选、选择框值的获取及表单的序列化(js实现单选框)

19

关于js表单处理中单选、多选、选择框值的获取及表单的序列化和js实现单选框的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajax全选、全不选、反选、单删/批删、android------

关于js表单处理中单选、多选、选择框值的获取及表单的序列化js实现单选框的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajax全选、全不选、反选、单删/批删、android -------- 流式布局,支持单选、多选等、Android中ListView + CheckBox实现单选、多选效果、Android使用AlertDialog实现的信息列表单选、多选对话框功能等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

js表单处理中单选、多选、选择框值的获取及表单的序列化(js实现单选框)

js表单处理中单选、多选、选择框值的获取及表单的序列化(js实现单选框)

本文总结了下在表单处理中单选、多选、选择框值的获取及表单的序列化,写成了一个对象。如下:

rush:js;"> var formUtil = { // 获取单选按钮的值,如有没有选的话返回null // elements为radio类的集合的引用 geTradiovalue:function(elements) { var value = null; // null表示没有选中项 // 非IE浏览器 if(elements.value != undefined && elements.value != '') { value = elements.value; } else { // IE浏览器 for(var i = 0,len = elements.length; i < len; i++ ) { if(elements[i].checked) { value = elements[i].value; break; } } } return value; },// 获取多选按钮的值,如有没有选的话返回null // elements为checkBox类型的input集合的引用 getCheckBoxValue:function(elements) { var arr = new Array(); for(var i = 0,len = elements.length; i < len; i++ ) { if(elements[i].checked) { arr.push(elements[i].value); } } if(arr.length > 0) { return arr.join(','); } else { return null; // null表示没有选中项 } },// 获取下拉框的值 // element为select元素的引用 getSelectValue:function(element) { if(element.selectedindex == -1) { return null; // 没有选中的项时返回null }; if(element.multiple) { // 多项选择 var arr = new Array(),options = element.options; for(var i = 0,len = options.length; i < len; i++) { if(options[i].selected) { arr.push(options[i].value); } } return arr.join(","); }else{ // 单项选择 return element.options[element.selectedindex].value; } },// 序列化 // form为form元素的引用 serialize:function(form) { var arr = new Array(),elements = form.elements,checkBoxName = null; for(var i = 0,len = elements.length; i < len; i++ ) { field = elements[i]; // 不发送禁用的表单字段 if(field.disabled) { continue; } switch (field.type) { // 选择框的处理 case "select-one": case "select-multiple": arr.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(this.getSelectValue(field))); break;
 // 不发送下列类型的表单字段 
 case undefined :
 case "button" :
 case "submit" :
 case "reset" :
 case "file" :
  break;

 // 单选、多选和其他类型的表单处理  
 case "checkbox" :
  if(checkboxName == null) {
   checkboxName = field.name;
   arr.push(encodeURIComponent(checkboxName) + "=" + encodeURIComponent(this.getCheckboxValue(form.elements[checkboxName])));
  }
  break;
 case "radio" :
  if(!field.checked) {
   break;
  }
 default:
  if(field.name.length > 0) {
   arr.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value));
  } 
}

}
return arr.join("&");
}
};

一个简单的demo:

rush:xhtml;">
PHP" id="form1" name="form1" method="post" enctype="multipart/form-data"> 姓名:
性别:dio" value="男"/> 男
爱好: 篮球 足球 乒乓球 羽毛球
年级:
其他:

ajax全选、全不选、反选、单删/批删

ajax全选、全不选、反选、单删/批删

<Meta charset="utf-8">
<?PHP
//链接数据库
$link = MysqLi_connect(‘127.0.0.1‘,‘root‘,‘mone‘);
//设置字符集
MysqLi_query($link,‘set names utf8‘);


//接收当前页
$page = empty($_GET[‘page‘])?1:$_GET[‘page‘];
//求出总条数
$sql = "select * from user";
$res = MysqLi_query($link,$sql);
$count = MysqLi_num_rows($res);
//每页显示多少条
$length = 3;
//求出总页数
$num_page = ceil($count/$length);
//偏移量
$limit = ($page-1)*$length;
//查询
$sql2 = "select * from user limit $limit,$length";
$res2 = MysqLi_query($link,$sql2);
while($a=MysqLi_fetch_assoc($res2)){
$data[‘data‘][] = $a;
}


$data[‘home_page‘] = 1;
$data[‘prev_page‘] = $page-1<1?1:$page-1;
$data[‘next_page‘] = $page+1>$num_page?$num_page:$page+1;
$data[‘last_page‘] = $num_page;

?>
<table>
<tr>
<th>选择</th>
<th>ID</th>
<th>用户名</th>
<th>密码</th>
<th>性别</th>
<th>年龄</th>
<th>班级</th>
<th>手机</th>
<th>编辑</th>
</tr>
<div id="main">
<?PHP foreach($data[‘data‘] as $k=>$v){ ?>
<tr id="<?PHP echo $v[‘user_id‘];?>">
<td><input type="checkBox" name="check" value="<?PHP echo $v[‘user_id‘];?>"></td>
<td><?PHP echo $v[‘user_id‘];?></td>
<td><?PHP echo $v[‘username‘];?></td>
<td><?PHP echo $v[‘pwd‘];?></td>
<td><?PHP echo $v[‘sex‘];?></td>
<td><?PHP echo $v[‘age‘];?></td>
<td><?PHP echo $v[‘class_name‘];?></td>
<td><?PHP echo $v[‘phone‘];?></td>
<td>
<a href="">修改</a>
</td>
</tr>
<?PHP } ?>
</div>
</table>

<button onclick="fun1()">全选</button>
<button onclick="fun2()">全不选</button>
<button onclick="fun3()">反选</button>
<button onclick="fun4()">单删/批删</button>
<script>

function fun1(){
var check = document.getElementsByName(‘check‘);
for(var i=0;i<check.length;i++){
if(check[i].checked==false){
check[i].checked=true;
}
}
}

function fun2(){
var check = document.getElementsByName(‘check‘);
for(var i=0;i<check.length;i++){
if(check[i].checked==true){
check[i].checked=false;
}
}
}

function fun3(){
var check = document.getElementsByName(‘check‘);
for(var i=0;i<check.length;i++){
if(check[i].checked==true){
check[i].checked=false;
}else{
check[i].checked=true;
}
}
}

function fun4(){
var arr = document.getElementsByName(‘check‘);
var ar = [];
for(var i=0;i<arr.length;i++){
if(arr[i].checked==true){
ar.push(arr[i].value);
}
}

var id = ar.toLocaleString();
if(id==‘‘){
alert(‘请先选择一项‘);
return false;
}else{
//ajax请求
var ajax = new XMLHttpRequest();
ajax.open("get","delete.PHP?id="+id);
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState==4 && ajax.status==200){
//alert(ajax.responseText);
//成功
if(ajax.responseText==1){

for(var i=0;i<ar.length;i++){
var tr=document.getElementById(ar[i]);
tr.remove();
}

}
}
}
}
}
</script>

 

 

<Meta charset="utf-8">
<?PHP
//链接数据库
$link = MysqLi_connect(‘127.0.0.1‘,"delete.PHP?id="+id);
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState==4 && ajax.status==200){
//alert(ajax.responseText);
//成功
if(ajax.responseText==1){

for(var i=0;i<ar.length;i++){
var tr=document.getElementById(ar[i]);
tr.remove();
}

} } } } }</script>

android -------- 流式布局,支持单选、多选等

android -------- 流式布局,支持单选、多选等

最近开发中有流式标签这个功能,网上学了下,来分享一下

Android 流式布局,支持单选、多选等,适合用于产品标签等。


效果图:

 

 

用法:

dependencies {
 compile ''com.hyman:flowlayout-lib:1.1.2''
}

 

布局:

<!--max_select:-1为不限制选择数量,>=1的数字为控制选择tag的数量-->
    <com.zhy.view.flowlayout.TagFlowLayout
        android:id="@+id/id_flowlayout"
        zhy:max_select="-1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp">
    </com.zhy.view.flowlayout.TagFlowLayout>

代码:

 

public class FlowlayoutActivity extends AppCompatActivity {

    TagFlowLayout tagFlowLayout;
    private List<String> list;
    private LayoutInflater layoutInflater;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.flowlayout_activity);

        list= new ArrayList<>();
        list.add("新闻");
        list.add("美食");
        list.add("体育");
        list.add("生活号");
        list.add("预留");
        list.add("娱乐");
        list.add("杭州市");
        list.add("太行");
        list.add("舞蹈");
        list.add("直播");
        list.add("新闻");
        list.add("美食");
        list.add("体育");
        list.add("生活号");
        list.add("预留");
        list.add("娱乐");
        list.add("杭州市");
        list.add("太行");
        list.add("舞蹈");
        list.add("直播");
        initView();
    }


    private void initView(){
        layoutInflater = LayoutInflater.from(this);
        tagFlowLayout = findViewById(R.id.id_flowlayout);

        tagFlowLayout.setAdapter(new TagAdapter<String>(list)
        {
            @Override
            public View getView(FlowLayout parent, int position, String s)
            {
                TextView tv = (TextView) layoutInflater.inflate(R.layout.flowlayout_item_tv,
                        tagFlowLayout, false);
                tv.setText(s);
                return tv;
            }
        });

        tagFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener()
        {
            @Override
            public boolean onTagClick(View view, int position, FlowLayout parent)
            {
                //得到点击的值
                Toast.makeText(getApplicationContext(), list.get(position), Toast.LENGTH_SHORT).show();
                return true;
            }
        });

        tagFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
            @Override
            public void onSelected(Set<Integer> selectPosSet) {
                Log.i("得到下标的集合",selectPosSet.toString());
                //得到下标的集合
                //Toast.makeText(getApplicationContext(),  selectPosSet.toString()+"s", Toast.LENGTH_SHORT).show();
            }
        });


        /*//预先设置选中
        mAdapter.setSelectedList(1,3,5,7,8,9);
        //获得所有选中的pos集合
        flowLayout.getSelectedList();*/
    }
}

 

上图日志:

 

代码文档:https://github.com/hongyangAndroid/FlowLayout

 

Android中ListView + CheckBox实现单选、多选效果

Android中ListView + CheckBox实现单选、多选效果

还是先来看看是不是你想要的效果:

不废话,直接上代码,很简单,代码里都有注释

1 单选

public class SingleActivity extends AppCompatActivity {
 private ListView listView;
 private ArrayList<String> groups;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_single);
  listView = (ListView) this.findViewById(R.id.lvGroup);
  groups = new ArrayList<String>();
  groups.add("11");
  groups.add("22");
  groups.add("33");
  groups.add("44");
  groups.add("55");
  groups.add("66");
  groups.add("77");
  AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
    // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
    SingleAdapter.ViewHolder viewHolder = (SingleAdapter.ViewHolder) view.getTag();
    viewHolder.cb.toggle();// 把CheckBox的选中状态改为当前状态的反,gridview确保是单一选中
   }
  };
  SingleAdapter adapter = new SingleAdapter(this,groups);
  listView.setAdapter(adapter);
  listView.setonItemClickListener(listItemClickListener);
 }
}

Adapter:

public class SingleAdapter extends BaseAdapter {
 private Activity activity;//上下文
 private ArrayList<String> list;
 private LayoutInflater inflater = null;//导入布局
 private int temp = -1;
 public SingleAdapter(Activity context,ArrayList<String> list) {
  this.activity = context;
  this.list = list;
  inflater = LayoutInflater.from(context);
 }
 @Override
 public int getCount() {
  return list.size();
 }
 @Override
 public Object getItem(int position) {
  return list.get(position);
 }
 @Override
 public long getItemId(int position) {
  return position;
 }
 //listview每显示一行数据,该函数就执行一次
 @Override
 public View getView(int position,View convertView,ViewGroup parent) {
  ViewHolder holder = null;
  if (convertView == null) {//当第一次加载ListView控件时 convertView为空
   convertView = inflater.inflate(R.layout.group_item_view,null);//所以当ListView控件没有滑动时都会执行这条语句
   holder = new ViewHolder();
   holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
   holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
   convertView.setTag(holder);//为view设置标签
  } else {//取出holder
   holder = (ViewHolder) convertView.getTag();
  }
  //设置list的textview显示
  holder.tv.setTextColor(Color.WHITE);
  holder.tv.setText(list.get(position));
  // 根据isSelected来设置checkBox的选中状况
  holder.cb.setId(position);//对checkBox的id进行重新设置为当前的position
  holder.cb.setonCheckedchangelistener(new CompoundButton.OnCheckedchangelistener() {
   @Override
   public void onCheckedChanged(CompoundButton compoundButton,boolean isChecked) {
    if (isChecked) {//实现checkBox的单选功能,同样适用于radiobutton
     if (temp != -1) {
      //找到上次点击的checkBox,并把它设置为false,对重新选择时可以将以前的关掉
      CheckBox tempCheckBox = (CheckBox) activity.findViewById(temp);
      if (tempCheckBox != null)
       tempCheckBox.setChecked(false);
     }
     temp = compoundButton.getId();//保存当前选中的checkBox的id值
    }
   }
  });
  if (position == temp)//比对position和当前的temp是否一致
   holder.cb.setChecked(true);
  else
   holder.cb.setChecked(false);
  return convertView;
 }
 public static class ViewHolder {
  TextView tv;
  CheckBox cb;
 }
}

多选:

public class MulActivity extends AppCompatActivity {
 private ListView listView;
 private ArrayList<String> groups;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_mul);
  listView = (ListView) this.findViewById(R.id.list);
  groups = new ArrayList<>();
  groups.add("11");
  groups.add("22");
  groups.add("33");
  groups.add("44");
  groups.add("55");
  groups.add("66");
  groups.add("77");
  AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent,long id) {
    // 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
    MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag();
    viewHolder.cb.toggle();// 把CheckBox的选中状态改为当前状态的反,gridview确保是单一选中
    MulAdapter.getIsSelected().put(position,viewHolder.cb.isChecked());//将CheckBox的选中状况记录下来
   }
  };
  MulAdapter adapter = new MulAdapter(this,groups);
  listView.setAdapter(adapter);
  listView.setonItemClickListener(listItemClickListener);
 }
}

Adapter:

public class MulAdapter extends BaseAdapter {
 private Context context;//上下文
 private ArrayList<String> list;
 //控制CheckBox选中情况
 private static HashMap<Integer,Boolean> isSelected;
 private LayoutInflater inflater = null;//导入布局
 public MulAdapter(Context context,ArrayList<String> list) {
  this.context = context;
  this.list = list;
  inflater = LayoutInflater.from(context);
  isSelected = new HashMap<Integer,Boolean>();
  initData();
 }
 private void initData() {//初始化isSelected的数据
  for (int i = 0; i < list.size(); i++) {
   getIsSelected().put(i,false);
  }
 }
 @Override
 public int getCount() {
  return list.size();
 }
 @Override
 public Object getItem(int position) {
  return list.get(position);
 }
 @Override
 public long getItemId(int position) {
  return position;
 }
 //listview每显示一行数据,null);//所以当ListView控件没有滑动时都会执行这条语句
   holder = new ViewHolder();
   holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
   holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
   convertView.setTag(holder);//为view设置标签
  } else {//取出holder
   holder = (ViewHolder) convertView.getTag();//the Object stored in this view as a tag
  }
  //设置list的textview显示
  holder.tv.setTextColor(Color.WHITE);
  holder.tv.setText(list.get(position));
  // 根据isSelected来设置checkBox的选中状况
  holder.cb.setChecked(getIsSelected().get(position));
  return convertView;
 }
 public static class ViewHolder {
  TextView tv;
  CheckBox cb;
 }
 public static HashMap<Integer,Boolean> getIsSelected() {
  return isSelected;
 }
 public static void setIsSelected(HashMap<Integer,Boolean> isSelected) {
  MulAdapter.isSelected = isSelected;
 }
}

以上所述是小编给大家介绍的Android中ListView + CheckBox实现单选、多选效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

Android使用AlertDialog实现的信息列表单选、多选对话框功能

Android使用AlertDialog实现的信息列表单选、多选对话框功能

在使用AlertDialog实现单选和多选对话框时,分别设置setSingleChoiceItems()和setMultiChoiceItems()函数。

下面看主要的代码:

数据源数组:

<resources>
<!--单选-->
<string-array name="arr_weather">
  <item >晴</item>
  <item >多云</item>
  <item >小雨</item>
  <item >中雨</item>
 </string-array>
<!--多选-->
<string-array name="arr_grasslandGreatType">
  <item >羊草</item>
  <item >牛草</item>
 </string-array>
</resources>

Activity中的主要代码:

点击事件:

case R.id.edt_sampleWeather:// 天气选取
String[] arrWeather = getResources().getStringArray(R.array.arr_weather);
showAlertDialog(arrWeather,selectWeatherId,tv_sampleWeather);
break;
case R.id.edt_grasslandGreatType:// 草地优势种选择
showMultiDialog();
break;

对应方法:

(1)showAlertDialog()方法,实现单选效果,selectWeatherId 设置选定的条目位置

private void showAlertDialog(final String[] items,int selectId,final int type,final TextView tView) {
AlertDialog.Builder builder = new AlertDialog.Builder(CreatePointActivity.this);
builder.setSingleChoiceItems(items,selectId,new DialogInterface.OnClickListener() {// 第二个参数是设置默认选中哪一项-1代表默认都不选
@Override
public void onClick(DialogInterface dialog,int which) {
tView.setText(items[which]);
if (type == 0) {
selectWeatherId = which;
} else if (type == 1) {
selectGrassLandTypeId = which;
} else if (type == 2) {
selectAgroTypeId = which;
}
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
dialog.setCanceledOnTouchOutside(true);// dialog弹出后,点击界面其他部分dialog消失
}

(2)showMultiDialog()方法,实现多选效果

boolean[] selected = new boolean[] { false,false };//默认选中位置
private void showMultiDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("草地优势种选择列表");
DialogInterface.OnMultiChoiceClickListener mutiListener = new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int which,boolean isChecked) {
selected[which] = isChecked;
}
};
builder.setMultiChoiceItems(R.array.arr_grasslandGreatType,selected,mutiListener);
DialogInterface.OnClickListener btnListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int which) {
String selectedStr = "";
for (int i = 0; i < selected.length; i++) {
if (selected[i] == true) {
selectedStr = selectedStr + " "
+ getResources().getStringArray(R.array.arr_grasslandGreatType)[i];
}
}
if (!TextUtils.isEmpty(selectedStr)) {
tv_grasslandGreatType.setText(selectedStr);
} else {
tv_grasslandGreatType.setText("暂无选择");
}
}
};
builder.setNegativeButton("取消",null);
builder.setPositiveButton("确定",btnListener);
AlertDialog dialog = builder.create();
dialog.show();
dialog.setCanceledOnTouchOutside(true);// dialog弹出后,点击界面其他部分dialog消失
}

以上就是实现的主要方法。

效果如下:

单选:

多选:

本站还给大家提供了有关android开发方面的专题栏目,大家可以参考下:

android 验证码功能 

Android RecyclerView使用方法汇总   

Android ListView常见功能  

Android控件imageview详细用法  

Android SDK基础教程  

Android 开发中缓存知识汇总 

以上所述是小编给大家介绍的Android使用AlertDialog实现的信息列表单选、多选对话框功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

关于js表单处理中单选、多选、选择框值的获取及表单的序列化js实现单选框的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于ajax全选、全不选、反选、单删/批删、android -------- 流式布局,支持单选、多选等、Android中ListView + CheckBox实现单选、多选效果、Android使用AlertDialog实现的信息列表单选、多选对话框功能的相关信息,请在本站寻找。

本文标签:

上一篇将docker-compose与docker swarm一起使用(docker compose和swarm)

下一篇JS实现设置ff与ie元素绝对位置的方法(js实现设置ff与ie元素绝对位置的方法有哪些)