12

I am trying to create a form , where one text field value depends on another text box.

With reference to angularjs, By default xeditable update local model after clicking save.But i would like to update the model instantly and show the updated value in another text box

<span editable-text="user.name" e-ng-model="user.name" e-name="name"></span>
<span editable-text="user.username" e-ng-model="user.username" e-name="username"></span>

I have enclosed the sample working code in jsfiddle

Pravin
  • 645
  • 3
  • 7
  • 21

2 Answers2

3

@Pravin I think that I found a solution. I had the situation where I needs update the xeditable model when user select the dictionary entry on typeahead input. I was looking the solution and I found the following way:

<span editable-text="p.name" e-name="name" e-form="productForm" e-required
  e-typeahead="product as product.name for product in getProducts($viewValue) | filter:$viewValue | limitTo: 8"
  e-typeahead-editable="true" e-ng-maxlength="256" e-typeahead-focus-first="false"
  e-typeahead-on-select='onSelectProductFromDictionary($item, $model, productForm)'>
     {{ p.name }}
</span>

And the method which update the xeditable data:

    $scope.onSelectProductFromDictionary = function ($item, $model, form) {

        angular.forEach(form.$editables, function(editable) {
            if (editable.name === 'name') {
                return;
            }
            editable.scope.$data = $model.something; // this is a dictionary model
            editable.save(); // move the value from edit input to view xeditable value
            editable.hide(); // hide the specific xeditable input if you needs
        });

    };

I hope it helps.

UPDATE [JSFIDDLE]

https://jsfiddle.net/fLc2sdd2/

Przemek Nowak
  • 7,173
  • 3
  • 53
  • 57
1

Its updating

check this

Working Demo

html

<h4>Angular-xeditable Editable form (Bootstrap 3)</h4>
<div ng-app="app" ng-controller="Ctrl">
 <form editable-form name="editableForm" onaftersave="saveUser()">
    <div>
      <!-- editable username (text with validation) -->
      <span class="title">Name: </span>
      <span editable-text="user.name" e-ng-model="user.name" e-name="name" e-required>{{ user.name || 'empty' }}</span>
    </div> 

    <div>
      <!-- editable username (text with validation) -->
      <span class="title">User name: </span>
      <span editable-text="user.username" e-ng-model="user.username" e-name="username" e-required>{{ user.username || 'empty' }}</span>
    </div>
    <div>

      <!-- button to show form -->
      <button type="button" class="btn btn-default" ng-click="editableForm.$show()" ng-show="!editableForm.$visible">
        Edit
      </button>


      <!-- buttons to submit / cancel form -->
      <span ng-show="editableForm.$visible">
        <button type="submit" class="btn btn-primary" ng-disabled="editableForm.$waiting">
          Save
        </button>
        <button type="button" class="btn btn-default" ng-disabled="editableForm.$waiting" ng-click="editableForm.$cancel()">
          Cancel
        </button>
      </span>
                <br> {{user}}
    </div>
  </form>  
</div>
Nidhish Krishnan
  • 20,593
  • 6
  • 63
  • 76
  • 1
    Thank you for your response. But what i am trying is , when i type value in text box1, it should update text box2 which contains model whose value depends on model1. – Pravin Jun 05 '14 at 07:42
  • that means while typing itself you want the data value to be changed within text box2 – Nidhish Krishnan Jun 05 '14 at 07:44
  • 1
    My ultimate aim is 3 steps. 1.type some thing in text box1. 2.based on text in textbox1 some function should be performed . 3.based on that it returns some value in text box2. Note: It should be done before clicking save button. – Pravin Jun 05 '14 at 08:54