Let $\mathbb{Z}^+$ denote the set of all positive integers. Find all surjective functions $f:\mathbb{Z}^+ \times \mathbb{Z}^+ \rightarrow \mathbb{Z}^+$ that satisfy all of the following conditions: for all $a,b,c \in \mathbb{Z}^+$,
(i)$f(a,b) \leq a+b$;
(ii)$f(a,f(b,c))=f(f(a,b),c)$
(iii)Both $\binom{f(a,b)}{a}$ and $\binom{f(a,b)}{b}$ are odd numbers.(where $\binom{n}{k}$ denotes the binomial coefficients)

1. **Understanding the problem and conditions:**
   - We need to find all surjective functions \( f: \mathbb{Z}^+ \times \mathbb{Z}^+ \rightarrow \mathbb{Z}^+ \) that satisfy:
     1. \( f(a,b) \leq a + b \)
     2. \( f(a, f(b, c)) = f(f(a, b), c) \)
     3. Both \( \binom{f(a,b)}{a} \) and \( \binom{f(a,b)}{b} \) are odd numbers.

2. **Analyzing the binomial coefficient condition:**
   - According to Lucas's Theorem, a binomial coefficient \( \binom{n}{k} \) is odd if and only if every bit in the binary representation of \( k \) is less than or equal to the corresponding bit in the binary representation of \( n \).
   - Therefore, for \( \binom{f(a,b)}{a} \) and \( \binom{f(a,b)}{b} \) to be odd, \( f(a,b) \) must have all bits set in \( a \) and \( b \) set in \( f(a,b) \). This implies \( f(a,b) \) must be the bitwise OR of \( a \) and \( b \), denoted \( a | b \).

3. **Verifying the function \( f(a, b) = a | b \):**
   - **Condition (i):** \( f(a, b) = a | b \leq a + b \)
     - The bitwise OR of two numbers is always less than or equal to their sum.
   - **Condition (ii):** \( f(a, f(b, c)) = f(f(a, b), c) \)
     - \( f(a, f(b, c)) = a | (b | c) = (a | b) | c = f(f(a, b), c) \)
   - **Condition (iii):** Both \( \binom{a | b}{a} \) and \( \binom{a | b}{b} \) are odd.
     - By Lucas's Theorem, since \( a | b \) has all bits of \( a \) and \( b \), both binomial coefficients are odd.

4. **Surjectivity:**
   - We need to show that for every positive integer \( n \), there exist \( a, b \in \mathbb{Z}^+ \) such that \( f(a, b) = n \).
   - Since \( f(a, b) = a | b \), we can always find such \( a \) and \( b \) by setting \( a \) and \( b \) to have the appropriate bits set to match \( n \).

5. **Conclusion:**
   - The function \( f(a, b) = a | b \) satisfies all the given conditions and is surjective.

The final answer is \( \boxed{ f(a, b) = a | b } \)