Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教几个表单的问题 #47

Closed
ch656409110 opened this issue Jan 7, 2019 · 6 comments
Closed

请教几个表单的问题 #47

ch656409110 opened this issue Jan 7, 2019 · 6 comments

Comments

@ch656409110
Copy link

美女你好, 请教几个表单的问题:
1、标签无法格式化选中的日期,比如我需要的是“2019-01-10”,加上:format="dateFormat"只能控制页面上显示,无法控制提交后的结果,还是给我的 "2019-01-10T08:28:37.888Z"这种。
比如:
<a-form-item label="发布时间"> <a-date-picker v-model="queryParam.publishTime" name="publishTime" style="width: 100%" :format="dateFormat" /> </a-form-item>
2、绑定的值只能数字,中文汉字无效,纠结了半天,如果绑定了fieldDecoratorId,会导致vue加载单选框默认不选中,但是如果不给fieldDecoratorId,form就取不到值,原因未知。
比如:
<a-form-item label="性别" :labelCol="{lg: {span: 2}, sm: {span: 7}}" :wrapperCol="{lg: {span: 10}, sm: {span: 17} }" fieldDecoratorId="sex" :fieldDecoratorOptions="{rules: [{ required: true, message: '请选择出生日期' }]}" > <a-radio-group v-model="sex"> <a-radio :value="1">男</a-radio> <a-radio :value="2">女</a-radio> </a-radio-group> </a-form-item>
3、标签的defaultValue="movie" 无效。
比如:
<a-form-item label="兴趣爱好" :labelCol="{lg: {span: 2}, sm: {span: 7}}" :wrapperCol="{lg: {span: 10}, sm: {span: 17} }" fieldDecoratorId="like" :fieldDecoratorOptions="{rules: [{ required: false, message: '请选择兴趣爱好' }]}" > <a-select defaultValue="movie"> <a-select-option value="game">游戏</a-select-option> <a-select-option value="movie">电影</a-select-option> <a-select-option value="lvyou">旅游</a-select-option> </a-select> </a-form-item>
请问你们也遇到了吗?

@ch656409110
Copy link
Author

我感觉我描述的不清楚,那个标签被过滤了,我贴下组件代码:

`

<a-form @submit="handleSubmit" :autoFormCreate="(form)=>{this.form = form}">


  <a-form-item
    label="出生日期"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="birthday"
    :fieldDecoratorOptions="{rules: [{ required: false, message: '请选择出生日期' }]}"
  >
    <a-date-picker name="birthday" style="width: 100%" />
  </a-form-item>
  获取的值无法格式化到yyyy-MM-dd
  <a-form-item
    label="出生时间"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="birthtime"
    :fieldDecoratorOptions="{rules: [{ required: false, message: '请选择出生时间' }]}"
  >
    <a-time-picker name="birthday" style="width: 30%"  />
  </a-form-item>



  <a-form-item
    label="性别"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="sex"
    :fieldDecoratorOptions="{rules: [{ required: true, message: '请选择出生日期' }]}"
  >
    <a-radio-group v-model="sex">
      <a-radio :value="1">男</a-radio>
      <a-radio :value="2">女</a-radio>
    </a-radio-group>
  </a-form-item>
  绑定的值只能数字,中文汉字无效,纠结了半天,如果绑定了fieldDecoratorId,会导致vue加载单选框默认不选中,但是如果不给fieldDecoratorId,form就取不到值,原因未知。


  <a-form-item
    label="居住城市"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="city"
    :fieldDecoratorOptions="{rules: [{ required: true, message: '请选择居住城市' }]}"
    >
    <a-checkbox-group  @change="onCheckboxChange">
        <a-checkbox value="上海">上海</a-checkbox>
        <a-checkbox value="无锡" >无锡</a-checkbox>
        <a-checkbox value="苏州" >苏州</a-checkbox>
        <a-checkbox value="杭州" >杭州</a-checkbox>
    </a-checkbox-group>
  </a-form-item> 
  <a-form-item
    label="工作时间"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="workTime"
    :fieldDecoratorOptions="{rules: [{ required: true, message: '请选择工作时间' }]}"
  >
    <a-range-picker name="workTime" style="width: 100%"/>
  </a-form-item>

  <a-form-item
    label="自我描述"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="description"
    :fieldDecoratorOptions="{rules: [{ required: true, message: '请输入自我描述' }]}"
  >
    <a-textarea rows="5" placeholder="请输入自我描述"/>
  </a-form-item>


  <a-form-item
    label="兴趣爱好"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="like"
    :fieldDecoratorOptions="{rules: [{ required: false, message: '请选择兴趣爱好' }]}"
  >
    <a-select defaultValue="movie">
      <a-select-option value="game">游戏</a-select-option>
      <a-select-option value="movie">电影</a-select-option> 
      <a-select-option value="lvyou">旅游</a-select-option> 
    </a-select>
  </a-form-item>

  <a-form-item
    label="掌握语言"
    :labelCol="{lg: {span: 2}, sm: {span: 7}}"
    :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
    fieldDecoratorId="language"
    :fieldDecoratorOptions="{rules: [{ required: false, message: '请选择掌握语言' }]}"
  >
    <a-select  mode="multiple">
      <a-select-option value="java">java</a-select-option>
      <a-select-option value=".net">.net</a-select-option>
      <a-select-option value="javascript">javascript</a-select-option>
      <a-select-option value="html5">html5</a-select-option>
      <a-select-option value="android">android</a-select-option>
    </a-select>
  </a-form-item>

  默认是单选框模式,需要在select上加上mode="multiple"后变成多选框模式
  必须指定所有option的value的值,否则控件不显示,目前还不够灵活,如果指定默认选中需要在select上加上mode="multiple"
  并且defaultValue="movie" 无效。
  <a-form-item :wrapperCol="{ span: 24 }" style="text-align: center">
    <a-button htmlType="submit" type="primary">提交</a-button>
    <a-button style="margin-left: 8px" v-on:click="tempSave">暂存</a-button>
  </a-form-item>


</a-form>
<div id="result" v-html="result"></div>
<script> import notification from 'ant-design-vue/es/notification' import moment from 'moment'; import 'moment/locale/zh-cn'; moment.locale('zh-cn'); export default { name: "simpleForm", data() { return { sex: 1, result: "" }; }, methods: { handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { // eslint-disable-next-line no-console console.log("Received values of form: ", values); //this.$data.result = values this.result = values; //两种方式都可以, 这里的this指向vue } }); }, tempSave(){ notification.success({ message: '测试',description: "你点了暂存" }); }, onCheckboxChange(checkedValues){ notification.info({ message: '测试',description: checkedValues.toString() }); } } }; </script> <style scoped> </style>

`

@ch656409110
Copy link
Author

第一个问题找到方法了,需要自己转换下:

if(queryParam.publishTime){ queryParam.publishTime = queryParam.publishTime.format('YYYY-MM-DD'); }

@sendya
Copy link
Member

sendya commented Jan 7, 2019

时间自己用 moment 转换

@sendya sendya closed this as completed Jan 7, 2019
@ch656409110
Copy link
Author

你们好辛苦啊,不容易!

@lettgers
Copy link

lettgers commented Jun 29, 2019

时间不能自己转一下吗 既然设置了format获取到的值应该是格式化之后的结果才对啊

@watsonhaw5566
Copy link

@lettgers format的值@change第二个参数dateString里面获取.
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants