关于js表单处理中单选、多选、选择框值的获取及表单的序列化和js实现单选框的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajax全选、全不选、反选、单删/批删、android------
关于js表单处理中单选、多选、选择框值的获取及表单的序列化和js实现单选框的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajax全选、全不选、反选、单删/批删、android -------- 流式布局,支持单选、多选等、Android中ListView + CheckBox实现单选、多选效果、Android使用AlertDialog实现的信息列表单选、多选对话框功能等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- js表单处理中单选、多选、选择框值的获取及表单的序列化(js实现单选框)
- ajax全选、全不选、反选、单删/批删
- android -------- 流式布局,支持单选、多选等
- Android中ListView + CheckBox实现单选、多选效果
- Android使用AlertDialog实现的信息列表单选、多选对话框功能
js表单处理中单选、多选、选择框值的获取及表单的序列化(js实现单选框)
本文总结了下在表单处理中单选、多选、选择框值的获取及表单的序列化,写成了一个对象。如下:
// 不发送下列类型的表单字段
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:
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 流式布局,支持单选、多选等,适合用于产品标签等。
效果图:
用法:
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实现单选、多选效果
还是先来看看是不是你想要的效果:
不废话,直接上代码,很简单,代码里都有注释
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实现的信息列表单选、多选对话框功能
在使用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实现的信息列表单选、多选对话框功能的相关信息,请在本站寻找。
本文标签: