精华内容
下载资源
问答
  • 表单搜索框项目
    千次阅读
    2021-06-09 05:08:51

    css3和原生js时钟

     true" 0.1 " => ...

    Java正則表達式演示样例

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public s ...

    关于解决配置Tomact过程中出现的相关问题

    最近在学习JavaWeb, 但是在第一步的时候就出现问题了, 什么问题呢, 就是关于Tomact的配置. 下面我就详细说明一下我配置过程中出现的问题以及怎么解决的,  希望对大家能有所帮助. 首先,我 ...

    Thrift生成的bean对象,用java内省操作时注意(自己笔记)

    项目需要,需要使用内省操作,将数据写入thrift生成的bean里,于是按常理getWritedMethod.invoke 结果发现set方法找不到,结果看了下thrift自己生成的bean里,set ...

    读懂javascript深拷贝与浅拷贝

    1. 认识深拷贝和浅拷贝 javascript中一般有按值传递和按引用传递两种复制,按值传递的是基本数据类型(Number,String,Boolean,Null,Undefined),一般存放于内存 ...

    [Swift]LeetCode279. 完全平方数 | Perfect Squares

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

    typeof 踩坑总结

    typeof '123' == 'string'  // true typeof ('123' == 'string' ) // "boolean" typeof 123 == N ...

    ionic2 获取dom节点

    ionic2页面上面获取dom节点,可以直接用原生的方法,document.querySelector()等, 但是不建议这样使用,建议使用官方的.就是要在获取的节点上加上#name的属性(相当于ge ...

    bootstrap 3.0 LESS源代码浅析(二)

    border-radius是最常见的CSS3属性,但你知道他多少东西呢? 比如: border-radius:2em; 相当于什么? border-top-left-radius:2em; borde ...

    更多相关内容
  • 在最近的项目当中就使用 Vant 作为移动端的基础UI框架,但在实践过程中发现该框架和其他框架有不一样的地方。例如它不内置表单验证,接下来,我把自己实现验证框架的思路分享出来。 分析需求 我们找的插件主要能...
  • 在<el-select> 中,加上 filterable 即可(v-model.trim:是过滤输入的空格),clearable:输入框带清空输入内容的功能

     

    <el-select v-model.trim="form.levelId" placeholder="请选择" clearable filterable>
          <el-option
              v-for="(item, index) in levelIds"
              :key="item.name + index"
              :label="item.name"
              :value="item.id"
          />
     </el-select>

     在<el-select> 中,加上 filterable 即可(v-model.trim:是过滤输入的空格),clearable:输入框带清空输入内容的功能

    展开全文
  • 之前旧项目维护,发现post提交form表单,还是会在搜索栏出现参数,并且传的是对象,百思不得其解。 ​ 页面代码: ​仔细查看了之前同事的代码,发现form 表单action的url直接传了对象过去 ...

    之前旧项目维护,发现post提交form表单,还是会在搜索栏出现参数,并且参数是对象,百思不得其解。

    ​ 页面代码:

    ​仔细查看了之前同事的代码,发现form 表单action的url直接传了对象过去

    ​ ​​​​​去掉action链接后面的参数对象后ok!

     

     

     

     

    展开全文
  • vue elementui 表格搜索筛选组件封装

    万次阅读 多人点赞 2020-01-19 15:35:54
    1、背景 vue后台管理系统,会有很多表格页面,表格上方会有一些搜索选项,表格直接使用el-table即可,而搜索栏区域每次写起来都很繁琐,而且...项目使用的是elementui框架,搜索栏这种表单提交,首先要使用el-form组...

    1、背景

    vue后台管理系统,会有很多表格页面,表格上方会有一些搜索选项。表格直接使用el-table即可,而搜索栏区域每次写起来都很繁琐,且多人开发情况下每个人写的样式都不相同,布局样式无法统一。

    所以要考虑对搜索栏做一个封装,统一配置引用,提升开发维护效率和界面统一。

    完成后的效果大概就是长这样:
    在这里插入图片描述

    2、分析

    项目使用的是elementui框架,搜索栏这种表单提交,首先要使用el-form组件来封装,而复杂点就是表单项可能有很多种,例如input输入框、select选择框、日期时间选择框、日期时间范围选择框、cascader级联选择框等,每一项的字段名prop、名称label、绑定的属性方法都不尽相同。所以不能通过普通的绑定个别属性的方式来处理,而slot插槽的方式也无法简化,最终决定通过传递一个配置项数组的形式来解析生成相应的结构。

    3、实现

    目前实现的方式由两部分组成,一部分是form表单组件,接受父组件传递的配置项数组,一部分是封装一些常用的表单项组件,通过v-if来控制,form表单组件里引入该表单项组件,循环遍历,根据传递的表单项类型来匹配显示具体的表单项。

    (1)form表单组件(searchForm.vue)示例代码:

    <el-form
      :model="formData"
      ref="formRef"
      :inline="true"
    >
      <el-form-item
        v-for="(item, index) in formOptions"
        :key="newKeys[index]"
        :prop="item.prop"
        :label="item.label ? (item.label + '') : ''"
        :rules="item.rules"
      >
        <formItem
          v-model="formData[item.prop]"
          :itemOptions="item"
        />
      </el-form-item>
    </el-form>
    

    (2)formItem表单项组件(formItem.vue)示例代码:

    <el-input
      v-if="isInput"
      v-model="currentVal"
      v-bind="bindProps"
      v-on="bindEvents"
      size="mini"
    ></el-input>
    
    <el-select
      v-if="isSelect"
      v-model="currentVal"
      v-bind="bindProps"
      v-on="bindEvents"
      size="mini"
      clearable
     >
      <el-option
        v-for="item in itemOptions.options"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      ></el-option>
    </el-select>
    

    4、关键点

    由于elementui表单组件本身有很多配置属性,不可能把所有的属性和方法都写死封装,要想无缝支持,需要用到vue的v-bind和v-on特性,vue的v-bind和v-on支持赋值为对象类型,vue会自动遍历对象里的属性依次绑定,v2.4.0+支持。

    5、参数配置项解释

    (1)示例:

    [{
    	label: '用户名', // label文字
    	prop: 'username', // 字段名
    	element: 'el-input', // 指定elementui组件
    	initValue: '阿黄', // 字段初始值
    	placeholder: '请输入用户名', // elementui组件属性
    	rules: [{ required: true, message: '必填项', trigger: 'blur' }], // elementui组件属性
    	events: { // elementui组件方法
    		input (val) {
    			console.log(val)
    		},
    	}
    }]
    
    • label 用于绑定给el-form-item上的label,表单项标题
    • prop 用于绑定给el-form-item上的prop,字段名,必填
    • element 指定elementui表单项的组件名,必填
    • initValue 表单项的初始值,可选
    • events 对象,对象里加方法,js原生方法或者elementui表单项组件支持的方法都可以加进去,通过v-on遍历绑定
    • … 其他elementui表单项组件支持的属性或者html原生属性都可以添加,常用的例如rules表单校验、placeholder提示,通过v-bind遍历绑定

    (2)参数传递解析的流程:

    • 首先,searchForm.vue组件里通过props接收参数:
    formOptions: {
      type: Array,
      required: true,
      default () {
        return []
      }
    },
    
    • created生命周期里处理初始值:
    // 添加初始值
    addInitValue () {
      const obj = {}
      this.formOptions.forEach(v => {
        if (v.initValue !== undefined) {
          obj[v.prop] = v.initValue
        }
      })
      this.formData = obj
    }
    
    • 一部分配置项绑定在el-form-item上,一部分传递给formItem表单项组件再绑定:
    <el-form-item
      v-for="(item, index) in formOptions"
      :key="newKeys[index]"
      :prop="item.prop"
      :label="item.label ? (item.label + '') : ''"
      :rules="item.rules"
    >
      <formItem
        v-model="formData[item.prop]"
        :itemOptions="item"
      />
    </el-form-item>
    
    • formItem.vue表单项组件里props接受传参:
    itemOptions: {
      type: Object,
      default () {
        return {}
      }
    }
    
    • computed里处理接收的参数itemOptions,生成要绑定的所有属性对象bindProps:
    // 绑定属性
    bindProps () {
      let obj = { ...this.itemOptions }
      // 移除已使用的或不相关的冗余属性
      delete obj.label
      delete obj.prop
      delete obj.element
      delete obj.initValue
      delete obj.rules
      delete obj.events
      if (obj.element === 'el-select') {
        delete obj.options
      }
      return obj
    },
    
    • computed里生成要绑定的所有方法对象bindEvents:
    // 绑定方法
    bindEvents () {
      return this.itemOptions.events || {}
    },
    
    • 最后dom里使用这些数据绑定:
    <el-input
      v-if="isInput"
      v-model="currentVal"
      v-bind="bindProps"
      v-on="bindEvents"
    ></el-input>
    

    (3)特殊情况的处理

    由于elementui的el-select里是通过el-option遍历实现的,而遍历数组options按elementui官方不是绑定在el-select上的,所以针对el-select的配置项再加一个options属性,即select选择项的数据数组。

    <el-select
     v-if="isSelect"
     v-model="currentVal"
     v-bind="bindProps"
     v-on="bindEvents"
     size="mini"
     clearable
    >
     <el-option
       v-for="item in itemOptions.options"
       :key="item.value"
       :label="item.label"
       :value="item.value"
     ></el-option>
    </el-select>
    

    elementui的日期时间选择器分了很多种,根据业务需要分别处理一下,我这里是根据type划分成了三种分开处理,最常用的是datetimerange日期时间范围选择器,作为默认项,还有一种monthrange,其余的都划为一种。(具体处理见文章末尾的完整代码)

    6、按钮组

    按钮其实就那么几个,没必要做太多的封装,根据业务有哪些按钮就封装进去,目前我这里就封装了三个按钮。
    通过props接受一个字符串标识按钮组:

    // 提交按钮项,多个用逗号分隔(search搜索, export导出, reset重置)
    btnItems: {
      type: String,
      default () {
        return 'search'
      }
    }
    

    7、使用方式示例

    • dom里:
    <!-- 搜索 -->
    <searchForm :formOptions="formOptions" @onSearch="onSearch"/>
    
    • vue data里:
    data () {
      return {
        formOptions: [
    	  {
    	    label: '意见内容',
    	    prop: 'content',
    	    element: 'el-input'
    	  },
    	  {
    	    label: '类型',
    	    prop: 'type',
    	    element: 'el-select',
    	    options: [
    	      { label: '给点意见', value: '1' },
    	      { label: '售后问题', value: '2' }
    	    ]
    	  },
    	  {
    	    label: '状态',
    	    prop: 'status',
    	    element: 'el-select',
    	    options: getFeedbackStatus()
    	  },
    	  {
    	    label: '提交时间',
    	    prop: 'timeRange',
    	    element: 'el-date-picker'
    	  }
    	],
      }
    }
    
    
    • vue methods里:
    methods: {
      // 获取搜索表单提交的数据
      onSearch (val) {
    	console.log(val)
      }
    }
    
    

    8、完整代码

    (1)searchForm.vue

    /**
     * 搜索栏公共组件
     */
    <template>
      <div class="search-form-box">
        <el-form
          :model="formData"
          ref="formRef"
          :inline="true"
        >
          <el-form-item
            v-for="(item, index) in formOptions"
            :key="newKeys[index]"
            :prop="item.prop"
            :label="item.label ? (item.label + '') : ''"
            :rules="item.rules"
          >
            <formItem
              v-model="formData[item.prop]"
              :itemOptions="item"
            />
          </el-form-item>
          
    	  <!-- 自定义插槽,可用于特殊表单块 -->
          <slot></slot>
        </el-form>
    
        <!-- 提交按钮 -->
        <div class="btn-box">
          <el-button
            v-if="btnItems.includes('search')"
            size="mini"
            type="primary"
            class="btn-search"
            @click="onSearch"
          >搜索</el-button>
    
          <el-button
            v-if="btnItems.includes('export')"
            size="mini"
            type="primary"
            class="btn-export"
            @click="onExport"
          >导出</el-button>
    
          <el-button
            v-if="btnItems.includes('reset')"
            size="mini"
            type="default"
            class="btn-reset"
            @click="onReset"
          >重置</el-button>
        </div>
      </div>
    </template>
    
    <script>
    import formItem from './formItem'
    import tools from '@/utils/tools'
    
    export default {
      props: {
        /**
         * 表单配置
         * 示例:
         * [{
         *   label: '用户名', // label文字
         *   prop: 'username', // 字段名
         *   element: 'el-input', // 指定elementui组件
         *   initValue: '阿黄', // 字段初始值
         *   placeholder: '请输入用户名', // elementui组件属性
         *   rules: [{ required: true, message: '必填项', trigger: 'blur' }], // elementui组件属性
         *   events: { // elementui组件方法
         *     input (val) {
         *       console.log(val)
         *     },
         *     ...... // 可添加任意elementui组件支持的方法
         *   }
         *   ...... // 可添加任意elementui组件支持的属性
         * }]
         */
        formOptions: {
          type: Array,
          required: true,
          default () {
            return []
          }
        },
        // 提交按钮项,多个用逗号分隔(search, export, reset)
        btnItems: {
          type: String,
          default () {
            return 'search'
          }
        }
      },
    
      data () {
        return {
          formData: {}
        }
      },
    
      computed: {
        newKeys () {
          return this.formOptions.map(v => {
            return tools.createUniqueString()
          })
        }
      },
    
      created () {
        this.addInitValue()
      },
    
      methods: {
        // 校验
        onValidate (callback) {
          this.$refs.formRef.validate(valid => {
            if (valid) {
              console.log('提交成功')
              console.log(this.formData)
              callback()
            }
          })
        },
        // 搜索
        onSearch () {
          this.onValidate(() => {
            this.$emit('onSearch', this.formData)
          })
        },
        // 导出
        onExport () {
          this.onValidate(() => {
            this.$emit('onExport', this.formData)
          })
        },
        onReset () {
          this.$refs.formRef.resetFields()
        },
        // 添加初始值
        addInitValue () {
          const obj = {}
          this.formOptions.forEach(v => {
            if (v.initValue !== undefined) {
              obj[v.prop] = v.initValue
            }
          })
          this.formData = obj
        }
      },
    
      components: { formItem }
    }
    </script>
    
    <style lang='less' scoped>
    .search-form-box {
      display: flex;
      margin-bottom: 15px;
    
      .btn-box {
        padding-top: 5px;
        display: flex;
    
        button {
          height: 28px;
        }
      }
      .el-form {
        /deep/ .el-form-item__label {
          padding-right: 0;
        }
        .el-form-item {
          margin-bottom: 0;
    
          &.is-error {
            margin-bottom: 22px;
          }
        }
        // el-input宽度
        /deep/ .form-item {
          > .el-input:not(.el-date-editor) {
            width: 120px;
          }
        }
        /deep/ .el-select {
          width: 120px;
        }
        /deep/ .el-cascader {
          width: 200px;
        }
      }
    }
    
    </style>
    
    

    (2)formItem.vue

    /**
     * 表单匹配项
     */
    <template>
      <div class='form-item'>
        <el-input
          v-if="isInput"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          size="mini"
        ></el-input>
    
        <el-input-number
          v-if="isInputNumber"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          :controls-position="itemOptions['controls-position'] || 'right'"
          size="mini"
        ></el-input-number>
    
        <el-select
          v-if="isSelect"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          size="mini"
          clearable
         >
          <el-option
            v-for="item in itemOptions.options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          ></el-option>
        </el-select>
    
        <!-- datetimerange/daterange -->
        <el-date-picker
          v-if="isDatePickerDateRange"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          :type="itemOptions.type || 'datetimerange'"
          size="mini"
          clearable
          :picker-options="pickerOptionsRange"
          start-placeholder="开始日期"
          range-separator=""
          end-placeholder="结束日期"
          :default-time="['00:00:00', '23:59:59']"
          value-format="yyyy-MM-dd HH:mm:ss"
        ></el-date-picker>
    
        <!-- monthrange -->
        <el-date-picker
          v-if="isDatePickerMonthRange"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          type="monthrange"
          size="mini"
          clearable
          :picker-options="pickerOptionsRangeMonth"
          start-placeholder="开始日期"
          range-separator=""
          end-placeholder="结束日期"
          value-format="yyyy-MM"
        ></el-date-picker>
    
        <!-- others -->
        <el-date-picker
          v-if="isDatePickerOthers"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          :type="itemOptions.type"
          size="mini"
          clearable
          placeholder="请选择日期"
        ></el-date-picker>
    
        <el-cascader
          v-if="isCascader"
          v-model="currentVal"
          v-bind="bindProps"
          v-on="bindEvents"
          size="mini"
          clearable
        ></el-cascader>
      </div>
    </template>
    
    <script>
    import tools from '@/utils/tools'
    
    export default {
      inheritAttrs: false,
    
      props: {
        value: {},
        itemOptions: {
          type: Object,
          default () {
            return {}
          }
        }
      },
    
      data () {
        return {
          pickerOptionsRange: tools.pickerOptionsRange,
          pickerOptionsRangeMonth: tools.pickerOptionsRangeMonth
        }
      },
    
      computed: {
        // 双向绑定数据值
        currentVal: {
          get () {
            return this.value
          },
          set (val) {
            this.$emit('input', val)
          }
        },
        // 绑定属性
        bindProps () {
          let obj = { ...this.itemOptions }
          // 移除冗余属性
          delete obj.label
          delete obj.prop
          delete obj.element
          delete obj.initValue
          delete obj.rules
          delete obj.events
          if (obj.element === 'el-select') {
            delete obj.options
          }
          return obj
        },
        // 绑定方法
        bindEvents () {
          return this.itemOptions.events || {}
        },
        // el-input
        isInput () {
          return this.itemOptions.element === 'el-input'
        },
        // el-input-number
        isInputNumber () {
          return this.itemOptions.element === 'el-input-number'
        },
        // el-select
        isSelect () {
          return this.itemOptions.element === 'el-select'
        },
        // el-date-picker (type: datetimerange/daterange)
        isDatePickerDateRange () {
          const isDatePicker = this.itemOptions.element === 'el-date-picker'
          const isDateRange = !this.itemOptions.type ||
            this.itemOptions.type === 'datetimerange' ||
            this.itemOptions.type === 'daterange'
          return isDatePicker && isDateRange
        },
        // el-date-picker (type: monthrange)
        isDatePickerMonthRange () {
          const isDatePicker = this.itemOptions.element === 'el-date-picker'
          const isMonthRange = this.itemOptions.type === 'monthrange'
          return isDatePicker && isMonthRange
        },
        //  el-date-picker (type: other)
        isDatePickerOthers () {
          const isDatePicker = this.itemOptions.element === 'el-date-picker'
          return isDatePicker && !this.isDatePickerDateRange && !this.isDatePickerMonthRange
        },
        // el-cascader
        isCascader () {
          return this.itemOptions.element === 'el-cascader'
        }
      },
    
      created () {},
    
      methods: {},
    
      components: {}
    }
    </script>
    
    <style lang='less' scoped>
    
    </style>
    
    

    (3)依赖引入的一些函数方法 tools.js

    /**
     * 创建唯一的字符串
     * @return {string} ojgdvbvaua40
     */
    function createUniqueString () {
      const timestamp = +new Date() + ''
      const randomNum = parseInt((1 + Math.random()) * 65536) + ''
      return (+(randomNum + timestamp)).toString(32)
    }
    
    // elementui日期时间范围 快捷选项
    const pickerOptionsRange = {
      shortcuts: [
        {
          text: '今天',
          onClick (picker) {
            const end = new Date()
            const start = new Date(new Date().toDateString())
            start.setTime(start.getTime())
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一周',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            picker.$emit('pick', [start, end])
          }
        }
      ]
    }
    
    // elementui月份范围 快捷选项
    const pickerOptionsRangeMonth = {
      shortcuts: [
        {
          text: '今年至今',
          onClick (picker) {
            const end = new Date()
            const start = new Date(new Date().getFullYear(), 0)
            picker.$emit('pick', [start, end])
          }
        },
        {
          text: '最近半年',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setMonth(start.getMonth() - 6)
            picker.$emit('pick', [start, end])
          }
        },
        {
          text: '最近一年',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setMonth(start.getMonth() - 12)
            picker.$emit('pick', [start, end])
          }
        }
      ]
    }
    

    (4)一些elmentui全局样式的修改

    // el-input-number (controls-position="right")
    .el-input-number.is-controls-right {
      .el-input-number__decrease {
        display: none;
      }
      .el-input-number__increase {
        display: none;
        top: 2px; // fix style bug
      }
      &:hover {
        .el-input-number__decrease {
          display: inline-block;
        }
        .el-input-number__increase {
          display: inline-block;
        }
      }
      .el-input__inner {
        text-align: left;
        padding-left: 5px;
        padding-right: 40px;
      }
    }
    
    // el-date-picker datetimerange
    .el-date-editor.el-date-editor--datetimerange {
      .el-range-separator {
        width: 24px;
        color: #999;
        padding: 0;
      }
      .el-range__icon {
        margin-left: 0;
      }
      &.el-input__inner {
        vertical-align: middle;
        padding: 3px 5px;
      }
      &.el-range-editor--medium {
        width: 380px;
    
        .el-range-separator {
          line-height: 30px;
        }
      }
      &.el-range-editor--mini {
        width: 330px;
    
        .el-range-separator {
          line-height: 22px;
        }
      }
    }
    
    // el-date-picker  not datetimerange
    .el-date-editor {
      .el-input__prefix {
        left: 0;
        top: 1px;
      }
      .el-input__suffix {
        right: 0;
        top: 1px;
      }
      .el-input__inner {
        padding: 0 25px;
      }
      &.el-input--mini {
        width: 175px;
      }
      &.el-input--medium {
        width: 195px;
      }
    }
    
    // input padding
    .el-input__inner {
      padding: 0 5px;
    }
    

    9、vue3兼容指南

    https://blog.csdn.net/u010059669/article/details/111269498

    展开全文
  • antd design 可搜索列的表单的封装
  • HTML在需要放置搜索条的页面中放置如下html代码,搜索条#search_bar包含一个form#myform表单表单中放置一个搜索输入框#search,一个搜索按钮.search_btn以及搜索按钮图标.search_ico。复制代码代码如下:CSS我们...
  • 最近的项目涉及到很多表单的制作,特别是复选(checkbox)和单选(radio)。但是在前端开发过程中发现,单(复)选框和它们后面的提示文字在不进行任何设置的情况下,是无法对齐的,而且在Firefox和IE中相差甚大。即使...
  • 1. 当用户在表单搜索框中,输入要搜索的用户名,点击搜索按钮后,查找到相对应的用户数据 2. 实现搜索功能的步骤 2.1 首先,使用v-model 指令,将文本输入框的数据与 data 中的数据做双向绑定 2.2 其次,为...
  • bizdoc.core BizDoc是用于提供表单流解决方案的软件开发人员框架。 它包括一个工作流引擎,一个类似邮箱的用户界面以及一组用于数据分析的内置组件。配置BizDoc是作为运行Angular 11的.Net Web应用程序构建的。要...
  • 点击保存之后,对表单进行了验证,导致之后请求的数据无法在更新到input中,也就是说即使在state中有值,也不会更新initialValue值,就导致搜索后的值不能正确填入input中,表单也就提交不了。 解决办法: 不使用...
  • 搜索框输入关键词按下回车,关键词数据以表单形式发送至后台服务器; 服务器收到请求,通过路由url解析后找到对应的视图处理函数进行处理; 视图处理函数从request.get中获得关键词数据,然后通过数据库匹配查...
  • 项目显示风格 表单的背景图片设置 表单的背景颜色设置 表单的宽度设置 表单输入框尺码设置 字段显示序号类型设置 字段排列方式设置 字段标题长度设置 =================================智能表单设计===============...
  • 最近有一个需求,要求页面中的搜索框,搜索表格数据,我这边做了一个demo,大家看一下 这边用的是vue2加上elementui中的table表格和input输入框 首页先把所有代码贴上 <template> <div class="about...
  • * 表单组件在挂载时,将组件的 fields 值赋给对应的交互组件 */ componentDidMount() { const { fields, pageIndex } = View; this.props.form.setFieldsValue(fields); this.getUser(pageIndex); ...
  • 为了能够在github上搜索用户并查看其所有信息,他们所做的项目和个人资料。 输入 在搜索表单上输入您在github上使用的用户名。 输出 查看用户个人资料照片及其信息和个人资料。 使用的技术 它使用了
  • Github搜索 描述 一个简单的应用程序,允许用户搜索github用户并获取其详细信息,或者搜索用户并获取其github存储库,这是使用angular和...用户也可以通过单击导航上的搜索存储库链接转到存储库页面来搜索存储库,
  • 编写一个具有搜索功能的搜索框

    千次阅读 2020-02-23 17:07:35
    搜索框功能 能够输入国家名称全部或部分,出现搜索框的提示下拉框。 具体的数据没有放在数据库中,用JavaScript写了一个数组,从这个数组中的国家名称中找就可以了 实现过程 首先先编写一个HTML页面,在页面...
  • 这几天在做公司的实际项目的时候,需要实现选中Bootstrap table中的任意一行数据点击编辑按钮弹出一个模态表单的形式对该行数据进行编辑。获取表格行的数据是比较方便的,具体可以查找Bootstrap table参考文档,...
  • web表单

    2019-04-05 10:09:07
    项目的实际开发中,经常需要设计各种各样的表单。直接编写HTML表单虽然简单,但修改相对于用PHP写的表单修改较麻烦。表单在web开发中是最基本和常用的功能,例如购物结算、信息搜索及页面登录等。简单来说表单就是...
  • OA表单制作(致远)

    2021-07-05 00:48:52
    第一步、导入已经制作好的xnl表单文件。第二步、对每个字段设置相关属性。1、设置文本属性,录入类型选择文本框。2、设置日期属性,录入类型选择日期控件。3、设置引用类型,录入类型选择关联表单--选择对应表单。4...
  • 如上图所示django admin在ModelAdmin中添加search_fields即可显示一个搜索框,但是不能设置搜索框的提示文字,在实际开发中要让使用的人知道输入什么可以进行快速检索,是一个快速提升用户体验的方法,在网上找了很...
  • 初学框架的学生,请问下怎样实现在主页home.html有一个表单搜索框,点击搜索能跳转到search.html的页面,并且把搜索框内的值对应的数据同时查询出来,在search.html页面上显示。前端方面不是特别懂,之前一直通过...
  • 后端一次性返回数据,前端实现分页效果,并且可以搜索,,,最左边懒和最右边固定,当窗口缩小时,产生滚动条 注:省份数据以及字段名重复,为了产生滚动条效果, 实现效果: 完整代码: <template> <...
  • 做的项目某页面需要有一个搜索,希望在我选择下拉选框的某个值提交,返回结果之后,之前提交的值默认selected。 html代码如下: ----选择设备---- {$vo.device_name} js代码如下: ...
  • Python开发-Django表单

    千次阅读 热门讨论 2021-11-29 14:40:55
    Django提供了一系列的工具和库来帮助您构建表单来接收网站访客的输入,然后处理以及响应这些输入
  • vben-Admin 框架--表单问题汇总

    千次阅读 2022-06-17 14:55:48
    true, // 是否显示顶部搜索表单 formConfig: { labelWidth: 100, // 表单label宽度 schemas, // 在data.ts中定义的表单数据 showAdvancedButton: true, }, }) 表格表单中定义插槽 适用于默认的表单类型满足不了我们...
  • Spry 框架是一个JavaScript 库,Web 设计人员使用它可以构建能够向站点访问者提供更丰富体验的 Web 页。本课程内容是SPRY框架的第一部分,从浅入深,带您进入WEB前端开发的世界,帮助你完成表单验证的实现。
  • vant表单checkbox验证问题

    千次阅读 2021-07-22 16:19:42
    项目中使用了vant的表单,提交时有非空验证。单选、输入框都验证成功了,唯独复选验证失败,选择选项之后还是显示未选择。官网和搜索引擎都找了下并没有找到答案。 因为之前布局问题使用了<van-row>和<...
  • 一个flutter练习项目

    2021-07-09 12:51:04
    https://github.com/iotjin/jh_flutter_demo实现的一些效果UI相关ListView相关(...表单录入(选择样式、输入样式、登录样式)dio封装、分页上下拉加载数据、传值和回传、网络状态获取baseNav、baseAppBar、BaseTabBar、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,680
精华内容 20,672
热门标签
关键字:

表单搜索框项目