HTML页面常用的编辑框
public class FormInputUtil { /**
* 获取表单中的InputText
*
* @param name
* @param rs
* @return
*/
public static String getFormInput(String name, ResultSet rs) {
StringBuffer buffer = new StringBuffer();
try {
buffer.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name)
.append("\" size=\"57\" style=\"height:22; border:0; vertical-align: middle; line-height:22px;\" value=\"")
.append(DaoUtil.nullToString(rs.getString(name))).append("\" />");
} catch (SQLException e) {
e.printStackTrace();
}
return buffer.toString();
}
/**
* 获取表单中的InputText
*
* @param name
* @param rs
* @return
*/
public static String getFormInput1(String name, String value) {
StringBuffer buffer = new StringBuffer();
buffer.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name)
.append("\" size=\"57\" style=\"height:22; border:0; vertical-align: middle; line-height:22px;\" value=\"")
.append(value).append("\" />");
return buffer.toString();
} /**
* 获取表单中Input中的时间
*
* @param name
* @param rs
* @return
*/
public static String getFormInputTime(String name, ResultSet rs) {
StringBuffer buffer = new StringBuffer();
try {
buffer.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name)
.append("\" class=\"Wdate\" size=\"57\" style=\"height:22; border:0; vertical-align: middle; line-height:22px;\"" +
" onfocus=\"WdatePicker({skin:'whyGreen'})\" value=\"").append(DaoUtil.nullToString(rs.getString(name))).append("\" />");
} catch (SQLException e) {
e.printStackTrace();
}
return buffer.toString();
} /**
* input 隐藏
* @param name
* @param rs
* @return
*/
public static String getFormInputHidden(String name, ResultSet rs) {
StringBuffer buffer = new StringBuffer();
try {
buffer.append("<input type=\"hidden\" name=\"").append(name).append("\" value=\""+DaoUtil.nullToString(rs.getString(name))+"\"")
.append("/>"+DaoUtil.nullToString(rs.getString(name)));
} catch (SQLException e) {
e.printStackTrace();
}
return buffer.toString();
} /**
* input 的值为空
* @param name
* @param type
* @return
*/
public static String getFormInputNullValue(String name, String type) {
String html = "<input type=\""+type+"\" id=\""+name+"\" name=\""+name+"\" size=\"57\" " +
"style=\"height:22; border:0; vertical-align: middle; line-height:22px;\" value=\"\" />";
if(type.equals("time")){
html = "<input type=\"text\" id=\""+name+"\" name=\""+name+"\" class=\"Wdate\" size=\"57\" style=\"height:22;" +
" border:0; vertical-align: middle; line-height:22px;\" onfocus=\"WdatePicker({skin:'whyGreen'})\" value=\"\" />";
}
return html;
} /**
* 表单input
* @param name
* @param ht
* @param type input类型
* @param flag 能否编辑
* @return
*/
public static String getEditInput(String name, Hashtable ht, String type, boolean flag){
StringBuffer s = new StringBuffer();
if(type.equals("text") || type.equals("date") || type.equals("select-one") || type.equals("number") || type.equals("phone")
|| type.equals("date_year") || type.equals("money") || type.equals("select-one-other") || type.equals("text1")){
if(flag){
// 文本框
if(type.equals("text")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" style=\"border:#999 1px solid;height: 22px;width: 164px;vertical-align: middle;line-height: 22px;\" />");
}else if(type.equals("text1")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" class='manage_text' />");
// 时间 2012-01-01
}else if(type.equals("date")){
String minDate = DaoUtil.nullToString(DaoUtil.HASHTAGS.get("DEFAULT_MINDATE")).equals("")?"":",minDate:'"+DaoUtil.HASHTAGS.get("DEFAULT_MINDATE")+"'";
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"").append(DaoUtil.nullToString(ht.get(name)))
.append("\" class=\"Wdate\" style=\"height: 22px;width: 164px;\" onClick=\"WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd',isShowClear:false"+minDate+"})\" />");
DaoUtil.HASHTAGS.remove("DEFAULT_MINDATE");
// 时间 2012
}else if(type.equals("date_year")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"").append(DaoUtil.nullToString(ht.get(name)))
.append("\" class=\"Wdate\" style=\"height: 22px;width: 164px;\" onClick=\"WdatePicker({dateFmt:'yyyy',readOnly:true,isShowClear:false})\" />");
// 下拉框
}else if(type.equals("select-one")){
s.append("<select id=\"").append(name).append("\" name=\"")
.append(name).append("\" style=\"width:164px;border:#999 1px solid;\">").append("<option value=\"\" selected=\"selected\">请选择...</option>");
String[] arr = DaoUtil.HASHTAGS.get("select-"+name).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<option value=\"").append(arr[i]).append("\" ").append(DaoUtil.nullToString(ht.get(name)).equals(arr[i])?
"selected":"").append(">").append(arr[i]).append("</option>");
}
DaoUtil.HASHTAGS.remove("select-"+name);
s.append("</select>");
// 下拉框2
}else if(type.equals("select-one-other")){
s.append("<select id=\"").append(name).append("\" name=\"")
.append(name).append("\" style=\"width:164px;border:#999 1px solid;\">").append("<option value=\"\" selected=\"selected\">请选择...</option>");
String[] arr = DaoUtil.HASHTAGS.get("select-other-"+name).toString().split("\\|");
String[] key = arr[0].split(",");
String[] value = arr[1].split(",");
for(int i=0;i<value.length;i++){
s.append("<option value=\"").append(value[i]).append("\" ").append(DaoUtil.nullToString(ht.get(name)).equals(value[i])?
"selected":"").append(">").append(key[i]).append("</option>");
}
DaoUtil.HASHTAGS.remove("select-other-"+name);
s.append("</select>");
// 数字 0-9
}else if(type.equals("number")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" style=\"border:#999 1px solid;height: 22px;width: 164px;\"")
.append(" onKeyPress=\"if(event.keyCode<48||event.keyCode>57)event.returnValue=false;\" />");
// 电话号码 0-9 '-'
}else if(type.equals("phone")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" style=\"border:#999 1px solid;height: 22px;width: 164px;\"")
.append(" onKeyPress=\"if(event.keyCode<45||event.keyCode==46||event.keyCode==47||event.keyCode>57)event.returnValue=false;\" />");
// 金额 0-9 '-' '.'
}else if(type.equals("money")){
s.append("<input type=\"text\" id=\"").append(name).append("\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" style=\"border:#999 1px solid;height: 22px;width: 164px;\"")
.append(" onKeyPress=\"if(event.keyCode<45||event.keyCode==47||event.keyCode>57)event.returnValue=false;\" />");
}
}else {
s.append(DaoUtil.nullToString(ht.get(name)));
}
// 文本域
}else if(type.equals("textarea")){
if(DaoUtil.nullToString(DaoUtil.HASHTAGS.get("ISNEEDTEXTAREA-"+name)).equals("no")){
s.append("<div style=\"margin-top: 5px;margin-bottom: 5px;\"><span style=\"margin-left: 20px;font-size: 14px;\">"+DaoUtil.nullToString(ht.get(name))+"</span></div>");
}else {
s.append("<textarea rows=\"6\" cols=\"130\" style=\"border:#999 1px solid;\" id=\"").append(name).append("\" name=\"").append(name)
.append("\" ").append(flag?"":"readonly").append(">").append(DaoUtil.nullToString(ht.get(name))).append("</textarea>");
}
DaoUtil.HASHTAGS.remove("ISNEEDTEXTAREA-"+name); }else if(type.equals("textarea2")){
if(DaoUtil.nullToString(DaoUtil.HASHTAGS.get("ISNEEDTEXTAREA-"+name)).equals("no")){
s.append("<div style=\"margin-top: 5px;margin-bottom: 5px;\"><span style=\"margin-left: 20px;font-size: 14px;\">"+DaoUtil.nullToString(ht.get(name))+"</span></div>");
}else {
s.append("<textarea rows='6' style=\"border:#999 1px solid; width: 90%; overflow-y: auto;\" id=\"").append(name).append("\" name=\"").append(name)
.append("\" ").append(flag?"":"readonly").append(">").append(DaoUtil.nullToString(ht.get(name))).append("</textarea>");
}
DaoUtil.HASHTAGS.remove("ISNEEDTEXTAREA-"+name); // 复选框1 disabled
}else if(type.equals("checkbox")){
String[] arr = DaoUtil.HASHTAGS.get("checkbox-"+name).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<label style=\"margin-right: 10px;\"><input type=\"checkbox\" name=\"").append(name).append("\" value=\"")
.append(arr[i]).append("\" ").append(flag?"":" disabled").append(DaoUtil.nullToString(ht.get(name))
.indexOf(arr[i])>-1?" checked":"").append(">").append(arr[i]).append("</label>");
}
DaoUtil.HASHTAGS.remove("checkbox-"+name); // 复选框2 return false
}else if(type.equals("checkbox2")){
String[] arr = DaoUtil.HASHTAGS.get("checkbox2-"+name).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<label style=\"margin-right: 10px;\"><input type=\"checkbox\" name=\"").append(name).append("\" value=\"")
.append(arr[i]).append("\" ").append(flag?"":" onclick=\"return false;\"").append(DaoUtil.nullToString(ht.get(name))
.indexOf(arr[i])>-1?" checked":"").append(">").append(arr[i]).append("</label>");
}
DaoUtil.HASHTAGS.remove("checkbox2-"+name); // 单选框
}else if(type.equals("radio")){
String[] arr = DaoUtil.HASHTAGS.get("radio-"+name).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<label style=\"margin-right: 10px;\"><input type=\"radio\" name=\"").append(name).append("\" value=\"")
.append(arr[i]).append("\" ").append(flag?"":" disabled")
.append(DaoUtil.nullToString(ht.get(name)).equals(arr[i])?" checked":"").append(">").append(arr[i]).append("</label>");
}
DaoUtil.HASHTAGS.remove("radio-"+name);
}else if(type.equals("radio2")){
if(flag){
String[] arr = DaoUtil.HASHTAGS.get("radio2-"+name).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<label style=\"margin-right: 10px;\"><input type=\"radio\" name=\"").append(name).append("\" value=\"")
.append(arr[i]).append("\" ").append(flag?"":" disabled")
.append(DaoUtil.nullToString(ht.get(name)).equals(arr[i])?" checked":"").append(">").append(arr[i]).append("</label>");
}
}else {
s.append(DaoUtil.nullToString(ht.get(name)));
}
DaoUtil.HASHTAGS.remove("radio2-"+name);
}else if(type.equals("hidden")){
s.append("<input type=\"hidden\" name=\"").append(name).append("\" value=\"")
.append(DaoUtil.nullToString(ht.get(name))).append("\" />").append(flag?DaoUtil.nullToString(ht.get(name)):"");
}else if(type.equals("select-one-value")){
String[] arr = DaoUtil.HASHTAGS.get("select-value-"+name).toString().split("\\|");
String[] key = arr[0].split(",");
String[] value = arr[1].split(",");
if(flag){
s.append("<select id=\"").append(name).append("\" name=\"")
.append(name).append("\" style=\"width:164px;border:#999 1px solid;\">").append("<option value=\"\" selected=\"selected\">请选择...</option>");
for(int i=0;i<value.length;i++){
s.append("<option value=\"").append(value[i]).append("\" ").append(DaoUtil.nullToString(ht.get(name)).equals(value[i])?
"selected":"").append(">").append(key[i]).append("</option>");
}
s.append("</select>");
}else {
for(int i=0;i<value.length;i++){
if(DaoUtil.nullToString(ht.get(name)).equals(value[i])){
s.append(key[i]);
}
}
}
DaoUtil.HASHTAGS.remove("select-value-"+name);
}
return s.toString();
} /**
* @param arg0 输入框类型
* @param arg1
* @param arg2 name
* @param arg3 是否编辑
* @param arg4 宽
* @return
*/
public static String getEditInput(String arg0, Hashtable arg1, String arg2, boolean arg3, String arg4){
return getEditInput(arg0, arg1, arg2, arg3, arg4, "", "");
}
/**
* @param arg0 输入框类型
* @param arg1
* @param arg2 name
* @param arg3 是否编辑
* @param arg4 宽
* @param arg5 是否校验
* @return
*/
public static String getEditInput(String arg0, Hashtable arg1, String arg2, boolean arg3, String arg4, String arg5){
return getEditInput(arg0, arg1, arg2, arg3, arg4, arg5, "");
}
/**
* @param arg0 输入框类型
* @param arg1
* @param arg2 name
* @param arg3 是否编辑
* @param arg4 宽
* @param arg5 是否校验
* @param arg6 自定义参数
* @return
*/
public static String getEditInput(String arg0, Hashtable arg1, String arg2, boolean arg3, String arg4, String arg5, String arg6){
StringBuffer s = new StringBuffer();
String validator = "";
if(!DaoUtil.nullToString(arg5).isEmpty()){
validator="validator_input='"+arg5+"' ";
}
if(arg0.equals("text")){
if(arg3){
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" style=\"border:#999 1px solid;height:22px;width:").append(arg4)
.append(";vertical-align: middle;line-height: 22px;\" ").append(validator).append(DaoUtil.nullToString(arg6)).append(" />");
}else {
s.append("<input type=\"hidden\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" />").append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
// 数字 0-9
}else if(arg0.equals("number")){
if(arg3){
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" style=\"border:#999 1px solid;height:22px;width:").append(arg4)
.append(";\"").append(" onfocus=\"this.style.imeMode='disabled'\" onKeyPress=\"if(event.keyCode<48||event.keyCode>57)event.returnValue=false;\" ")
.append(validator).append(DaoUtil.nullToString(arg6)).append(" />");
}else {
s.append("<input type=\"hidden\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" />").append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
// 金额 0-9 '-' '.'
}else if(arg0.equals("money")){
if(arg3){
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.getDecimalFormat("decimal", arg1.get(arg2))).append("\" style=\"border:#999 1px solid;height: 22px;width:").append(arg4).append(";\" ")
.append(" onfocus=\"this.style.imeMode='disabled'\" onKeyPress=\"if(event.keyCode<45||event.keyCode==47||event.keyCode>57)event.returnValue=false;\" ")
.append(validator).append(DaoUtil.nullToString(arg6)).append(" />");
}else {
s.append("<input type=\"hidden\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.getDecimalFormat("decimal", arg1.get(arg2))).append("\" />").append(DaoUtil.nullToNBSP(DaoUtil.getDecimalFormat("decimal", arg1.get(arg2))));
}
// 下拉框
}else if(arg0.equals("select-one-value")){
String[] arr = DaoUtil.HASHTAGS.get("select-value-"+arg2).toString().split("\\|");
if(arr.length==2){
String[] key = arr[0].split(",");
String[] value = arr[1].split(",");
if(key.length==value.length){
if(arg3){
s.append("<select id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" style=\"width:")
.append(arg4).append(";border:#999 1px solid;\" ").append(validator).append(DaoUtil.nullToString(arg6))
.append(">").append("<option value=\"\" selected=\"selected\">请选择...</option>");
for(int i=0;i<value.length;i++){
s.append("<option value=\"").append(value[i]).append("\" ").append(DaoUtil.nullToString(arg1.get(arg2)).equals(value[i])?
"selected":"").append(">").append(key[i]).append("</option>");
}
s.append("</select>");
}else {
for(int i=0;i<value.length;i++){
if(DaoUtil.nullToString(arg1.get(arg2)).equals(value[i])){
s.append(key[i]);
}
}
}
}
}
DaoUtil.HASHTAGS.remove("select-value-"+arg2);
}else if(arg0.equals("select-one")){
if(arg3){
String[] arr = DaoUtil.HASHTAGS.get("select-"+arg2).split(",");
s.append("<select id=\"").append(arg2)
.append("\" name=\"").append(arg2).append("\" style=\"width:").append(arg4).append(";border:#999 1px solid;\" ").append(validator)
.append(DaoUtil.nullToString(arg6)).append(">").append("<option value=\"\" selected=\"selected\">请选择...</option>");
for(int i=0;i<arr.length;i++){
s.append("<option value=\"").append(arr[i]).append("\" ").append(DaoUtil.nullToString(arg1.get(arg2)).equals(arr[i])?
"selected":"").append(">").append(arr[i]).append("</option>");
}
s.append("</select>");
}else {
s.append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
DaoUtil.HASHTAGS.remove("select-"+arg2);
}else if(arg0.equals("select-custom")){
String selValue = DaoUtil.HASHTAGS.get("selcustom-"+arg2).toString();
String[] arr = selValue.split("\\|");
if(arr.length==2){
String[] key = arr[0].split(",");
String[] value = arr[1].split(",");
if(key.length==value.length){
if(arg3){
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" readonly='readonly' value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" style=\"border:#999 1px solid;height:22px;width:").append(arg4)
.append(";vertical-align: middle;line-height: 22px;\" ").append(validator).append(DaoUtil.nullToString(arg6))
.append(" onclick='textclick(this);' />");
s.append("<div class='divcls' id='"+arg2+"div' oncontextmenu='javascript:event.returnValue=false;'>");
for(int i=0;i<value.length;i++){
s.append("<div title='"+key[i]+"' onmouseover='mouseover(this);' onmouseout='mouseout(this);' onclick='divclick(this);' value='"+value[i]+"'>"+key[i]+"</div>");
}
s.append("</div>");
}else {
for(int i=0;i<value.length;i++){
if(DaoUtil.nullToString(arg1.get(arg2)).equals(value[i])){
s.append(key[i]);
}
}
}
}
}else {
if(arg3){
String[] a = selValue.split(",");
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" readonly='readonly' value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" style=\"border:#999 1px solid;height:22px;width:").append(arg4)
.append(";vertical-align: middle;line-height: 22px;\" ").append(validator).append(DaoUtil.nullToString(arg6))
.append(" onclick='textclick(this);' />");
s.append("<div class='divcls' id='"+arg2+"div' oncontextmenu='javascript:event.returnValue=false;' onclick=\"javascript:this.style.display='none';\">");
for(int i=0;i<a.length;i++){
s.append("<div title='"+a[i]+"' onmouseover='mouseover(this);' onmouseout='mouseout(this);' onclick='divclick(this);' value='"+a[i]+"'>"+a[i]+"</div>");
}
s.append("</div>");
}else {
s.append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
}
DaoUtil.HASHTAGS.remove("selcustom-"+arg2);
}else if(arg0.equals("textarea")){
if(arg3){
s.append("<textarea style=\"border:#999 1px solid;width:").append(arg4).append(";height:55px;overflow-y:visible;\" id=\"")
.append(arg2).append("\" name=\"").append(arg2).append("\" ").append(validator).append(DaoUtil.nullToString(arg6))
.append(">").append(DaoUtil.nullToString(arg1.get(arg2))).append("</textarea>");
}else {
s.append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
}else if(arg0.equals("date")){
if(arg3){
s.append("<input type=\"text\" id=\"").append(arg2).append("\" name=\"").append(arg2).append("\" value=\"")
.append(DaoUtil.nullToString(arg1.get(arg2))).append("\" class=\"Wdate\" style=\"border:#999 1px solid;height: 22px;width: ").append(arg4)
.append(";\" onClick=\"WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd',isShowClear:false})\" ").append(validator)
.append(DaoUtil.nullToString(arg6)).append(" />");
}else {
s.append(DaoUtil.nullToNBSP(arg1.get(arg2)));
}
}else if("checkbox".equals(arg0)){
if(arg3){
String[] arr = DaoUtil.HASHTAGS.get("checkbox-"+arg2).toString().split(",");
for(int i=0;i<arr.length;i++){
s.append("<label style=\"margin-right: 10px;\"><input type=\"checkbox\" name=\"").append(arg2).append("\" value=\"")
.append(arr[i]).append("\" ").append(DaoUtil.nullToString(arg1.get(arg2))
.indexOf(arr[i])>-1?" checked='checked'":"").append("/>").append(arr[i]).append("</label>");
}
}
DaoUtil.HASHTAGS.remove("checkbox-"+arg2);
}else if("hidden".equals(arg0)){
if(arg3){
s.append("<input type='hidden' name='"+arg2+"' id='"+arg2+"' value='"+DaoUtil.nullToString(arg1.get(arg2))+"' />"+DaoUtil.nullToNBSP(arg1.get(arg2)));
}else {
s.append("<input type='hidden' name='"+arg2+"' id='"+arg2+"' value='"+DaoUtil.nullToString(arg1.get(arg2))+"' />");
}
}
return s.toString();
} /**
* 自定义下拉框
* @param name
* @param value
* @param size
* @return
*/
public static String getCustomSelect(String name, String value, int size){
StringBuffer s = new StringBuffer();
String[] a = value.split(",");
s.append("<div class='divcls' id='" + name + "div' style='height:" + (20 * size + 3)
+ "px;' oncontextmenu='return false;' onclick='$(this).hide();'>\n");
for (int i = 0; i < a.length; i++) {
s.append("<div title='" + a[i] + "' onclick='divclick(this);' value='"
+ a[i] + "' onmouseover='mouseover(this);' onmouseout='mouseout(this);'>" + a[i] + "</div>\n");
}
s.append("</div>\n");
return s.toString();
}
/**
* 自定义下拉框
* 引用jquery.select.js
* @param list List《Hashtable《String,Object》》 list
* @param k
* @param vs
* @param join 多个字符串采用的连接符,默认为‘:’
* @return
*/
/**
* 自定义下拉框
* 引用jquery.select.js
* @param list List《Hashtable《String,Object》》 list
* @param id div选项的id
* @param valueK 点击选项后,填充到输入框中的值
* @param showKs 通过此数组给定要在选项上展示的值,在hashtable中所对应的k
* @param callback 点击选项后执行的回调
* @param style 样式
* @param join 多个字符串采用的连接符,不填默认为‘:’
* @return
*/
public static String getCustomSelect(List<Hashtable<String,Object>> list,String id,String valueK,String[] showks,String callback,String style,String... join){
StringBuffer s=new StringBuffer();
if(list==null||list.isEmpty()||StringUtil.isEmpty(id)||StringUtil.isEmpty(valueK)){
return "";
}
String joinstr=(join.length<1)||StringUtil.isEmpty(join[0])?":":join[0];
Hashtable<String,Object> h=null;
s.append("<div class='divcls' id="+id+" style='"+style+"' "
+ "oncontextmenu='return false;' onclick='$(this).hide();'> ");
for(int i=0,len=list.size();i<len;i++){
h=list.get(i);
String showVal="";
for (int j = 0; j < showks.length; j++) {
if(j==0){
showVal+=h.get(showks[j]).toString();
continue;
}
showVal+=joinstr+h.get(showks[j]).toString();
}
s.append("<div title='" + h.get(valueK).toString() + "' onclick='$.fn.divclick(this,"+callback+");' value='"+h.get(valueK).toString()+"'"
+" onmouseover='$.fn.mouseover(this);' onmouseout='$.fn.mouseout(this);' >"+showVal+"</div>");
}
s.append("</div>\n");
return s.toString();
} /**
* button
* @param name
* @param value
* @param params
* @param flag
* @return
*/
public static String getButton(String name, String value, String params, boolean flag) {
StringBuffer s = new StringBuffer();
if (flag) {
s.append("<input type='button' id='"+name+"' name='"+name+"' value='"+value+"' "+params+" />");
}
return s.toString();
} /**
* date
* @param name
* @param value
* @param flag
* @param style
* @param picker dateFmt:'yyyy-MM-dd',qsEnabled:true,isShowClear:true,isShowToday:true,isShowOthers:true,readOnly:false
* @param params
* @return
*/
public static String getDate(String name, Object value, boolean flag, String style, String picker, String params){
StringBuffer s = new StringBuffer();
if(flag){
String df = "";
if (params != null && !"".equals(params)) {
if(params.indexOf("<DF>")>-1&¶ms.indexOf("</DF>")>params.indexOf("<DF>")){
df = params.substring(params.indexOf("<DF>")+4, params.indexOf("</DF>"));
params = params.replace("<DF>"+df+"</DF>", "");
}
}
String val = DaoUtil.nullToString(value);
if("".equals(val)){
val = df;
}
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + val
+ "\" class='Wdate' style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" onClick=\"WdatePicker({"
+ DaoUtil.nullToString(picker) + "})\" " + DaoUtil.nullToString(params) + " />");
}else {
s.append(getHidden(name, value, false));
s.append(DaoUtil.nullToNBSP(value));
}
return s.toString();
} /**
* text
* @param name
* @param value
* @param flag
* @param style height: 22px;vertical-align: middle;line-height: 22px;
* @param params
* @return
*/
public static String getInput(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)
+ "\" style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" " + DaoUtil.nullToString(params) + " />");
}else {
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)+ "\" />");
s.append(DaoUtil.nullToNBSP(value));
}
return s.toString();
} /**
* number
* @param name
* @param value
* @param flag
* @param style
* @param params
* @return
*/
public static String getNumber(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)
+ "\" style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" onfocus=\"this.style.imeMode='disabled'\""
+ "onKeyPress='if(event.keyCode<48||event.keyCode>57)event.returnValue=false;' " + DaoUtil.nullToString(params) + " />");
}else {
s.append(DaoUtil.nullToNBSP(value));
}
return s.toString();
} /**
* phone
* @param name
* @param value
* @param flag
* @param style
* @param params
* @return
*/
public static String getPhone(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)
+ "\" style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" onfocus=\"this.style.imeMode='disabled'\""
+ "onKeyPress=\"if(event.keyCode!=45&&(event.keyCode<48||event.keyCode>57)){event.returnValue=false;}else{if(event.keyCode==45&&(this.value==''||this.value.indexOf('-')>-1)){event.returnValue=false;}}\" " + DaoUtil.nullToString(params) + " />");
}else {
s.append(DaoUtil.nullToNBSP(value));
}
return s.toString();
} /**
* money
* @param name
* @param value
* @param flag
* @param style
* @param params
* @return
*/
public static String getMoney(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)
+ "\" style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" onfocus=\"this.style.imeMode='disabled'\""
+ " onKeyPress=\"if(event.keyCode<46||event.keyCode==47||event.keyCode>57){event.returnValue=false;}else{if("
+"event.keyCode==46&&(this.value==''||this.value.indexOf('.')>-1)){event.returnValue=false;}}\" " + DaoUtil.nullToString(params) + " />");
}else {
s.append(DaoUtil.nullToNBSP(DaoUtil.getDecimalFormat("decimal", value)));
}
return s.toString();
} /**
* money
* @param name
* @param value
* @param flag
* @param style
* @param params
* @return
*/
public static String getMoney2(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<input type='text' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)
+ "\" style=\"border:#999 1px solid;" + DaoUtil.nullToString(style) + "\" onfocus=\"this.style.imeMode='disabled'\""
+ " onKeyPress=\"if(event.keyCode<45||event.keyCode==47||event.keyCode>57){event.returnValue=false;}else if"
+ "(event.keyCode==45&&this.value!=''){event.returnValue=false;} "
+ "else{if(event.keyCode==46&&(this.value==''||this.value.indexOf('.')>-1)){event.returnValue=false;}}\" " + DaoUtil.nullToString(params) + " />");
}else {
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value)+ "\" />");
s.append(DaoUtil.nullToNBSP(DaoUtil.getDecimalFormat("decimal", value)));
}
return s.toString();
} /**
* hidden
* @param name
* @param value
* @param flag
* @return
*/
public static String getHidden(String name, Object value, boolean flag){
StringBuffer s = new StringBuffer();
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value) + "\" />");
if(flag){
s.append(DaoUtil.nullToNBSP(value));
}
return s.toString();
} public static String getHidden(String name, Object value, boolean flag,String spanName){
StringBuffer s = new StringBuffer();
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" + DaoUtil.nullToString(value) + "\" />");
if(flag){
s.append("<span id='"+spanName+"' name='"+spanName+"' >").append(DaoUtil.nullToNBSP(value)).append("</span>");
}
return s.toString();
} /**
* select
* @param name
* @param value
* @param option
* @param flag
* @param style
* @param params
* @return
*/
public static String getSelect(String name, Object value, String option, boolean flag, String style, String params){
if(value == null){
value = "";
}
StringBuffer s = new StringBuffer();
if(option!=null && !"".equals(option)){
String df = "";
if (params != null && !"".equals(params)) {
if(params.indexOf("<DF>")>-1&¶ms.indexOf("</DF>")>-1){
df = params.substring(params.indexOf("<DF>")+4, params.indexOf("</DF>"));
params = params.replace("<DF>"+df+"</DF>", "");
}
}
String[] a = option.split("\\|");
if(a.length==2){
String[] k = a[0].split(",");
String[] v = a[1].split(",");
if(k.length==v.length){
if(flag){
s.append("<select id='"+name+"' name='"+name+"' style=\"border:#999 1px solid;"
+DaoUtil.nullToString(style)+"\" "+DaoUtil.nullToString(params)+">");
s.append("<option value='' selected>请选择...</option>");
if("".equals(value.toString())){
value = df;
}
for(int i=0;i<v.length;i++){
s.append("<option value=\""+v[i]+"\" "+(v[i].equals(value.toString())?"selected":"")+">"+k[i]+"</option>");
}
s.append("</select>");
}else {
for(int i=0;i<v.length;i++){
if(v[i].equals(value.toString())){
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" +v[i]+ "\" />");
s.append(k[i]);
break;
}
}
}
}
}else {
String[] k = option.split(",");
if(flag){
s.append("<select id='"+name+"' name='"+name+"' style=\"border:#999 1px solid;"
+DaoUtil.nullToString(style)+"\" "+DaoUtil.nullToString(params)+">");
s.append("<option value='' selected>请选择...</option>");
for(int i=0;i<k.length;i++){
if("".equals(value.toString())){
value = df;
}
s.append("<option value=\""+k[i]+"\" "+(k[i].equals(value.toString())?"selected":"")+">"+k[i]+"</option>");
}
s.append("</select>");
}else {
s.append(value.toString());
}
}
} else {
s.append("<select id='"+name+"' name='"+name+"' style=\"border:#999 1px solid;"
+DaoUtil.nullToString(style)+"\" "+DaoUtil.nullToString(params)+">");
s.append("<option value='' selected>请选择...</option>");
s.append("</select>");
}
return s.toString();
} /**
* radio
* @param name
* @param value
* @param option
* @param flag
* @param style
* @param params
* @return
*/
public static String getRadio(String name, Object value, String option, boolean flag, String style, String params){
if(value == null){
value = "";
}
StringBuffer s = new StringBuffer();
if(option!=null && !"".equals(option)){
String df = "";
if (params != null && !"".equals(params)) {
if(params.indexOf("<DF>")>-1&¶ms.indexOf("</DF>")>-1){
df = params.substring(params.indexOf("<DF>")+4, params.indexOf("</DF>"));
params = params.replace("<DF>"+df+"</DF>", "");
}
}
String[] a = option.split("\\|");
if(a.length==2){
String[] k = a[0].split(",");
String[] v = a[1].split(",");
if(k.length==v.length){
if(flag){
if("".equals(value)){
value = df;
}
for(int i=0;i<v.length;i++){
s.append("<label style='" + DaoUtil.nullToString(style) + "'><input type='radio' name='" + name
+ "' value=\"" + v[i] + "\" " + (v[i].equals(value.toString()) ? " checked" : "") + " style='margin-right:2px;' "
+ DaoUtil.nullToString(params) + " />" + k[i] + "</label>");
}
}else {
for(int i=0;i<v.length;i++){
if(v[i].equals(value.toString())){
s.append(k[i]);
break;
}
}
}
}
}else {
String[] k = option.split(",");
if(flag){
if("".equals(value)){
value = df;
}
for(int i=0;i<k.length;i++){
s.append("<label style='" + DaoUtil.nullToString(style) + "'><input type='radio' name='" + name
+ "' value=\"" + k[i] + "\" " + (k[i].equals(value.toString()) ? " checked" : "") + " style='margin-right:2px;' "
+ DaoUtil.nullToString(params) + " />" + k[i] + "</label>");
}
}else {
s.append(DaoUtil.nullToString(value));
}
}
}
return s.toString();
} /**
* 多选框checkbox
* @param name
* @param value
* @param option
* @param flag
* @param style
* @param params
* @return
*/
public static String getCheckbox(String name, Object value, String option, boolean flag, String style, String params){
if(value == null){
value = "";
}
StringBuffer s = new StringBuffer();
if(option!=null && !"".equals(option)){
String[] a = option.split("\\|");
if(a.length==2){
String[] k = a[0].split(",");
String[] v = a[1].split(",");
if(k.length==v.length){
if(flag){
for(int i=0;i<v.length;i++){
s.append("<label style='" + DaoUtil.nullToString(style) + "'><input type='checkbox' name='" + name
+ "' value=\"" + v[i] + "\" " + (v[i].equals(value.toString()) ? " checked" : "") + " style='margin-right:2px;' "
+ DaoUtil.nullToString(params) + " />" + k[i] + "</label>");
}
}else {
for(int i=0;i<v.length;i++){
if(v[i].equals(value.toString())){
s.append(k[i]);
break;
}
}
}
}
}else {
String[] k = option.split(",");
if(flag){
for(int i=0;i<k.length;i++){
s.append("<label style='" + DaoUtil.nullToString(style) + "'><input type='checkbox' name='" + name
+ "' value=\"" + k[i] + "\" " + (k[i].equals(value.toString()) ? " checked" : "") + " style='margin-right:2px;' "
+ DaoUtil.nullToString(params) + " />" + k[i] + "</label>");
}
}else {
s.append(value.toString());
}
}
}
return s.toString();
} /**
* 列表checkBox
* @param id
* @param name
* @param value
* @param flag
* @param params
* @return
*/
public static String getListBox(String id, String name, Object value, boolean flag, String params){
StringBuffer s = new StringBuffer();
if(flag) {
s.append("<input type='checkbox' id='" + DaoUtil.nullToString(id) + "' name='" + DaoUtil.nullToString(name)
+ "' value=\"" + DaoUtil.nullToString(value) + "\" " + DaoUtil.nullToString(params) + " />");
} else {
s.append(" ");
}
return s.toString();
} /**
* textArea
* @param name
* @param value
* @param flag
* @param style
* @param params
* @return
*/
public static String getTextArea(String name, Object value, boolean flag, String style, String params){
StringBuffer s = new StringBuffer();
if(flag){
s.append("<textarea style=\"border:#999 1px solid; " + DaoUtil.nullToString(style) + "\" id='" + name
+ "' name='" + name + "' " + DaoUtil.nullToString(params) + ">" + DaoUtil.nullToString(value) + "</textarea>");
}else {
s.append("<div style=\"margin-top: 5px;margin-bottom: 5px;\"><span style=\"font-size: 14px;\">"
+ DaoUtil.nullToNBSP(value) + "</span></div>");
s.append("<input type='hidden' id='" + name + "' name='" + name + "' value=\"" +value+ "\" />");
}
return s.toString();
} /**
* 表单input
* @param name
* @param ht
* @param type input类型
* @param flag 能否编辑
* @return
*/
public static String getEditInput2(String name, Hashtable ht, String type, boolean flag){
StringBuffer s = new StringBuffer();
if(type.equals("select-one-value")){
String[] arr = DaoUtil.nullToString(DaoUtil.HASHTAGS.get("select-value-"+name)).split("\\|");
if(arr.length==2){
String[] key = arr[0].split(",");
String[] value = arr[1].split(",");
if(flag){
s.append("<select id=\"").append(name).append("\" name=\"")
.append(name).append("\" style=\"width:164px;border:#999 1px solid;\">").append("<option value=\" \" selected=\"selected\">请选择...</option>");
for(int i=0;i<value.length;i++){
s.append("<option value=\"").append(value[i]).append("\" ").append(DaoUtil.nullToString(ht.get(name)).equals(value[i])?
"selected":"").append(">").append(key[i]).append("</option>");
}
s.append("</select>");
}else {
for(int i=0;i<value.length;i++){
if(DaoUtil.nullToString(ht.get(name)).equals(value[i])){
s.append(key[i]);
}
}
}
DaoUtil.HASHTAGS.remove("select-value-"+name);
}
}
return s.toString();
} /**
*
* @param id id
* @param value <sapn>value</span>
* @param style style属性值
* @return
*/
public static String getSpan(String id,String bindData,String value,String style){
StringBuffer buf=new StringBuffer();
buf.append("<span ")
.append("id='")
.append(id)
.append("' value='")
.append(bindData)
.append("' style='")
.append(StringUtil.isEmpty(style)?"":style.trim())
.append("'>")
.append(value)
.append("</span>");
return buf.toString();
}
/**
* 使用此方法需要引入 util.js 或者重写 Util.pageJump 方法
* 获得一个分页条
* @param page {
* pageCount:"总页数",
* currPage:"当前页",
* rowCount:"总记录数"
* }
* @param callback 点击分页条之后执行的回调函数名
*/
public static String getPaingPilot(Page page, String callback) {
StringBuffer html=new StringBuffer();
html.append("<table width='99%'>")
.append("<tr style='height:25px;'>")
.append("<td class='riskPage hsebg_td02' id='page' pageCount='")
.append(page.getPageCount())
.append("' currPage='")
.append(page.getCurrPage())
.append("'>")
.append("<span style='MARGIN-RIGHT: 20px' hasbox='2'>")
.append("<span id='rowCount'>共")
.append(page.getRowCount())
.append("条记录</span>")
.append("<a id='firstPage' onclick='Util.pageJump(this,")
.append(callback)
.append(")' href='javascript:;'>首页</a> |")
.append("<a id='prePage' onclick='Util.pageJump(this,")
.append(callback)
.append(")' href='javascript:;'>上一页</a> |")
.append("<a id='nextPage' onclick='Util.pageJump(this,")
.append(callback)
.append(")' href='javascript:;'>下一页</a> |")
.append("<a id='lastPage' onclick='Util.pageJump(this,")
.append(callback)
.append(")' href='javascript:;'>末页</a> 第 ")
.append(page.getCurrPage())
.append("页 / 共")
.append(page.getPageCount())
.append(" 页</span></td>")
.append("</tr>")
.append("</table>");
return html.toString();
}
/**
* 使用此方法需要引入 util.js 或者重写 Util.pageJump 方法
* @param hashtable{
* pageCount:"总页数",
* currPage:"当前页",
* rowCount:"总记录数",
* pageSize:"每页记录数"
* }
* @param callback 点击分页条选项之后执行的回调函数名
* @return
*/
public static String getPaingPilot(Hashtable data, String callback) {
String pageSize=StringUtil.isEmpty(data.get("pageSize"))?"10":data.get("pageSize").toString();
String rowCount=StringUtil.isEmpty(data.get("rowCount"))?"0":data.get("rowCount").toString();
String currPage=StringUtil.isEmpty(data.get("currPage"))?"0":data.get("currPage").toString();
return getPaingPilot(new Page(Integer.valueOf(pageSize),Integer.valueOf(rowCount),Integer.valueOf(currPage)),callback);
}
/**
* 获得一个固定选中的下拉选
* @param selectId
* @param optionId
* @param optionVal
* @return
*/
public static String getFixedSelectOption(String selectId,Object optionId,String optionVal){
StringBuffer option=new StringBuffer();
option.append("<select id='")
.append(selectId)
.append("' name='")
.append(selectId)
.append("' >")
.append("<option value='")
.append(optionId)
.append("' selected >")
.append(optionVal)
.append("</option>")
.append("</select>");
return option.toString();
} }
HTML页面常用的编辑框的更多相关文章
- MFC编程入门之二十一(常用控件:编辑框Edit Control)
上一节讲了静态文本框,本节讲的是编辑框(Edit Control)同样是一种很常用的控件,我们可以在编辑框中输入并编辑文本.在前面加法计算器的例子中已经演示了编辑框的基本应用.下面具体讲解编辑框的使用 ...
- myeclipse页面编辑框空格、回车符、对齐出现特殊字符
myeclipse页面编辑框空格.回车符.对齐出现特殊字符 解决办法:window-preferences-general-editors-Text Editors 把show whitespa ...
- VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)
鸡啄米上一节讲了静态文本框,本节要讲的编辑框(Edit Control)同样是一种很常用的控件,我们可以在编辑框中输入并编辑文本.在前面加法计算器的例子中已经演示了编辑框的基本应用.下面具体讲解编辑框 ...
- VS2010-MFC(常用控件:编辑框Edit Control)
转自:http://www.jizhuomi.com/software/181.html 编辑框(Edit Control)是一种很常用的控件,我们可以在编辑框中输入并编辑文本.在前面加法计算器的例子 ...
- Android EditText弹出软键盘实现页面标题头不动,软键盘弹出在编辑框下面
为了实现EditText编辑的时候弹出软键盘标题头不动,底部编辑框,上移在这总结: RelativeLayout在弹出软键盘的时候先寻找android:layout_alignParentBottom ...
- WEB页面常用基本控件测试用例
一.树控件的测试外观操作 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的.比如默认树是否是展开,是展开几级? 是否有默认的焦点? 默认值是什么?展开的节点图标和颜色? 2.执行操作 1 ...
- java报表工具FineReport的SQL编辑框的语法简介
感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...
- java报表工具FineReport的公式编辑框的语法简介
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式, ...
- java报表工具FineReport的JS编辑框和URL地址栏语法简介
JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道 ...
随机推荐
- Investigating issues with Unmanaged Memory. First steps. (转载)
原文:http://kate-butenko.blogspot.tw/2012/07/investigating-issues-with-unmanaged.html I want to write ...
- [转]Tomcat优化之内存、并发、缓存
1.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. JAVA_OPTS ...
- 【Linux】安装配置Tomcat7
第一步:下载Tomcat安装包 下载地址:https://tomcat.apache.org/download-70.cgi [root@localhost ~]# wget http://mirro ...
- 进程 multiprocessing详解
一 ,核心 就是像线程一样管理进程 ,类似于threading ,cup利用率较好,该模块用来跨平台的多进程模块,含有一个Process 类代表进程对象,start() 启动进程 Process语法结 ...
- 1、Dubbo源码解析--Dubbo如何驱动Spring IOC容器并配合工作的?
首先Spring要注入自己的bean需要在Spring-provider.xml(提供者spring注入文件,名字可能不一样)添加bean注入,其中有dubbo的自定义标签,xml如何识别这些标签?拿 ...
- Scrapy框架之日志等级和请求传参
一.Scrapy的日志等级 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. 1.日志等级(信息种类) ERROR:错误 WARN ...
- vue1.0 与 Vue2.0的一些区别 及用法
1.Vue2.0的模板标记外必须使用元素包起来: eg:Vue1.0的写法 <!DOCTYPE html> <html> <head> <meta chars ...
- 使用Android Studio搭建Android开发环境
一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...
- 怎样在vs2013和vs2015中实现自动编译sass
Visual Studio不论是2013版本还是2015版本要自动编译都需要添加扩展. 添加扩展的方法,路径“工具”->“扩展和更新”,在打开的窗口“搜索”你需要的扩展根据提示“下载”和“安装” ...
- 每天一个linux命令-id,输出用户的uid、gid
id命令可以输出用户真实有效的uid和gid,uid代表用户的唯一标识,gid代表用户组id,与用户是一对多的关系. 命令格式: id [-gGnru] [用户名称] 除了id命令之外,还 ...